├── CHANGELOG.md ├── dist └── scss │ ├── layouts │ ├── __documentation.scss │ ├── _container.scss │ ├── _grid-fallback-ie.scss │ ├── _grid-fallback.scss │ └── _grid.scss │ ├── settings │ ├── __documentation.scss │ └── _atomic-bulldog-settings.scss │ ├── functions │ ├── __documentation.scss │ ├── _map-deep-get.scss │ └── _em.scss │ ├── atomic-bulldog-grid-fallback.scss │ ├── atomic-bulldog-grid-fallback-ie.scss │ ├── variables │ ├── _grid.scss │ ├── _root-classes.scss │ ├── __documentation.scss │ ├── _container-sizes.scss │ ├── _breakpoints.scss │ └── _spacers.scss │ ├── atomic-bulldog-grid.scss │ ├── mixins │ ├── __documentation.scss │ └── _media-queries.scss │ └── NO-USE-demo-style.scss ├── README.md ├── package.json ├── LICENSE ├── static └── css │ ├── NO-USE-demo-style.min.css │ ├── NO-USE-demo-style.css │ ├── atomic-bulldog-grid-fallback.min.css │ ├── atomic-bulldog-grid-fallback-ie.min.css │ ├── atomic-bulldog-grid.min.css │ └── atomic-bulldog-grid-fallback-ie.css ├── gulpfile.js ├── .gitignore └── index.html /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | http://keepachangelog.com/en/1.0.0/ 4 | 5 | ## [1.0.0] - 2018-02-22 6 | 7 | Initial release of Atomic Bulldog Grid 8 | 9 | -------------------------------------------------------------------------------- /dist/scss/layouts/__documentation.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // KSS Documentation 3 | // ------------------------------ 4 | 5 | // Layouts 6 | // 7 | // weight: 4 8 | // 9 | // Styleguide Layout -------------------------------------------------------------------------------- /dist/scss/settings/__documentation.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // KSS Documentation 3 | // ------------------------------ 4 | 5 | // Project settings 6 | // 7 | // Global Atomic bulldog settings 8 | // 9 | // Weight: 11 10 | // 11 | // Styleguide Settings -------------------------------------------------------------------------------- /dist/scss/functions/__documentation.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // KSS Documentation 3 | // ------------------------------ 4 | 5 | // Sass Functions 6 | // 7 | // > It is possible to define your own functions in sass and use them in any value or script context 8 | // 9 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#function_directives 10 | // 11 | // weight: 8 12 | // 13 | // Styleguide Functions -------------------------------------------------------------------------------- /dist/scss/atomic-bulldog-grid-fallback.scss: -------------------------------------------------------------------------------- 1 | //Global settings 2 | $use-css-var: false; 3 | 4 | //functions 5 | @import "functions/em"; 6 | @import "functions/map-deep-get"; 7 | 8 | //mixins 9 | @import "mixins/media-queries"; 10 | 11 | //variables 12 | @import "variables/root-classes"; 13 | @import "variables/breakpoints"; 14 | @import "variables/grid"; 15 | @import "variables/spacers"; 16 | 17 | //layout 18 | @import "layouts/grid-fallback"; 19 | -------------------------------------------------------------------------------- /dist/scss/atomic-bulldog-grid-fallback-ie.scss: -------------------------------------------------------------------------------- 1 | //Global settings 2 | $use-css-var: false; 3 | 4 | //functions 5 | @import "functions/em"; 6 | @import "functions/map-deep-get"; 7 | 8 | //mixins 9 | @import "mixins/media-queries"; 10 | 11 | //variables 12 | @import "variables/root-classes"; 13 | @import "variables/breakpoints"; 14 | @import "variables/grid"; 15 | @import "variables/spacers"; 16 | 17 | //layout 18 | @import "layouts/grid-fallback-ie"; 19 | -------------------------------------------------------------------------------- /dist/scss/variables/_grid.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // Sass Variables 3 | // ------------------------------ 4 | $grid-columns: 12; 5 | 6 | // ------------------------------ 7 | // KSS Documentation 8 | // ------------------------------ 9 | 10 | // Grid 11 | // 12 | // This project use by default CSS grid layout `display: grid` for its grid with a fallback on flexbox for older browsers. 13 | // `$grid-columns` allow setting the number of columns we want per grid. 14 | // 15 | // Styleguide Variables.grid -------------------------------------------------------------------------------- /dist/scss/atomic-bulldog-grid.scss: -------------------------------------------------------------------------------- 1 | /*Atomic Bulldog version 1.0.0*/ 2 | 3 | //Global settings 4 | $use-css-var: true; 5 | 6 | //functions 7 | @import "functions/em"; 8 | @import "functions/map-deep-get"; 9 | 10 | //mixins 11 | @import "mixins/media-queries"; 12 | 13 | //variables 14 | @import "variables/root-classes"; 15 | @import "variables/breakpoints"; 16 | @import "variables/container-sizes"; 17 | @import "variables/grid"; 18 | @import "variables/spacers"; 19 | 20 | //layout 21 | @import "layouts/container"; 22 | @import "layouts/grid"; -------------------------------------------------------------------------------- /dist/scss/variables/_root-classes.scss: -------------------------------------------------------------------------------- 1 | $root-default: " 2 | :root, 3 | .theme-default, 4 | .is-theme-default 5 | "; 6 | 7 | // ------------------------------ 8 | // KSS Documentation 9 | // ------------------------------ 10 | 11 | // Theme classes 12 | // 13 | // CSS Variables and theme classes are set in the variable files using this Sass variables: 14 | // * `$root-default` => :root, .theme-default, .is-theme-default 15 | // * `$root-invert-theme` => :root .theme-invert, :root .is-theme-invert 16 | // 17 | // Styleguide Variables.themeClasses -------------------------------------------------------------------------------- /dist/scss/mixins/__documentation.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // KSS Documentation 3 | // ------------------------------ 4 | 5 | // Sass Mixins 6 | // 7 | // > Mixins allow you to define styles that can be re-used throughout the stylesheet without needing to resort to non-semantic classes 8 | // like .float-left. Mixins can also contain full CSS rules, and anything else allowed elsewhere in a Sass document. 9 | // They can even take arguments which allows you to produce a wide variety of styles with very few mixins. 10 | // 11 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixins 12 | // 13 | // weight: 7 14 | // 15 | // Styleguide Mixins -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Atomic Bulldog Grid :collision: :dog: 2 | 3 |

4 | Atomic Bulldog Logo 5 |

6 | 7 | CSS (SCSS) grid, based on CSS grid layout with @supports fallback to flexbox (partial support). 8 | 9 | [**Grid Demo**](https://vinceumo.github.io/atomic-bulldog-grid/) 10 | 11 | ----- 12 | 13 | Atomic Bulldog grid is the grid use in Atomic Bulldog. 14 | 15 | Atomic Bulldog is a Scss(Sass) boilerplate base on atomic design methodology. It integrates Node KSS to automatically generate a live styleguide/pattern library. 16 | 17 | [**Atomic Bulldog on Github**](https://github.com/vinceumo/atomic-bulldog) 18 | -------------------------------------------------------------------------------- /dist/scss/functions/_map-deep-get.scss: -------------------------------------------------------------------------------- 1 | @function map-deep-get($map, $keys...) { 2 | @each $key in $keys { 3 | $map: map-get($map, $key); 4 | } 5 | @return $map; 6 | } 7 | 8 | // ------------------------------ 9 | // KSS Documentation 10 | // ------------------------------ 11 | 12 | // map-deep-get($map, $keys...) 13 | // 14 | // The map-deep-get function allows to get and set values from the nested tree. 15 | // This function is used to set the media queries with em value. 16 | // 17 | // Source: 18 | // - https://css-tricks.com/snippets/sass/deep-getset-maps/ 19 | // 20 | // Parameters: 21 | // * `$map` - targeted map 22 | // * `$keys` - Keys to target 23 | // 24 | // Usage: 25 | // * `map-deep-get($aspect-ratios, 1x1, width)` 26 | // 27 | // Styleguide Functions.mapdeepget -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "name": "atomic.bulldog.grid", 4 | "private": true, 5 | "devDependencies": { 6 | "gulp": "^3.9.1", 7 | "gulp-autoprefixer": "^4.0.0", 8 | "gulp-bundle-assets": "^2.29.0", 9 | "gulp-clean-css": "^3.9.0", 10 | "gulp-purge-sourcemaps": "^1.0.0", 11 | "gulp-rename": "^1.2.2", 12 | "gulp-sass": "^3.1.0", 13 | "gulp-sourcemaps": "^2.6.1", 14 | "gulp-strip-comments": "^2.5.1", 15 | "gulp-util": "^3.0.8", 16 | "onchange": "^3.3.0", 17 | "browser-sync": "^2.18.13" 18 | }, 19 | "scripts": { 20 | "startBrowserSync": 21 | "browser-sync start --server --files '**/*.css, **/*.html, **/*.js, !node_modules/**/*' --directory --port 7777 --browser \"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\"", 22 | "gulp": "gulp" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /dist/scss/settings/_atomic-bulldog-settings.scss: -------------------------------------------------------------------------------- 1 | $use-css-var: false; 2 | 3 | // ------------------------------ 4 | // KSS Documentation 5 | // ------------------------------ 6 | 7 | // Use CSS variable Flag 8 | // 9 | // `$use-css-var` 10 | // 11 | // By default Atomic Bulldog use CSS variables. You can compile the real values by changing this flag to false. It is not recommended to do so as it will break some theming options. 12 | // Moreover postCSS can be used to compile CSS variables. 13 | // 14 | //

15 | // Can I Use css-variables? Data on support for the css-variables feature across the major browsers from caniuse.com. 16 | //

17 | // 18 | // Styleguide Settings.useCssVar 19 | -------------------------------------------------------------------------------- /dist/scss/variables/__documentation.scss: -------------------------------------------------------------------------------- 1 | // Sass variables 2 | // 3 | // >The most straightforward way to use SassScript is to use variables. Variables begin with dollar signs, and are set like CSS properties 4 | // 5 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variables_ 6 | // 7 | // > Maps represent an association between keys and values, where keys are used to look up values. 8 | // They make it easy to collect values into named groups and access those groups dynamically. 9 | // They have no direct parallel in CSS, although they're syntactically similar to media query expressions: 10 | // 11 | // http://sass-lang.com/documentation/file.SASS_REFERENCE.html#maps 12 | // 13 | // Sass variables helps to define patterns in the project. They are the core of this project. 14 | // Most of this variables are define in maps and can be call using a function link to this map. 15 | // 16 | // weight: 6 17 | // 18 | // Styleguide Variables -------------------------------------------------------------------------------- /dist/scss/functions/_em.scss: -------------------------------------------------------------------------------- 1 | // Used for "min" and "max" media query mixins 2 | @function em($size, $context: 16) { 3 | @return (($size/ 1px) / $context) + 0em; 4 | } 5 | 6 | // ------------------------------ 7 | // KSS Documentation 8 | // ------------------------------ 9 | 10 | // em($size, $context: 16) 11 | // 12 | // The em function converts px value into an em value. By default, the function uses the base 16px. 13 | // This function is used to set the media queries with em value. 14 | // Resources: 15 | // - https://css-tricks.com/em-based-media-queries-are-based-on/ 16 | // - https://zellwk.com/blog/media-query-units/ 17 | // 18 | // Parameters: 19 | // * `$size` - Size in px to be converted in em 20 | // * `$context` - Optional value. By default $context is equal to 16 as this function is mostly use for media queries 21 | // 22 | // Usage: 23 | // * `em(400px);` 24 | // 25 | // Output: 26 | // * `25em;` 27 | // 28 | // Styleguide Functions.em -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Vincent Humeau 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /static/css/NO-USE-demo-style.min.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Lato:300,400,700);html{font-size:20px}body{background-color:#2c303a;color:#fff;font-family:Lato,Arial,Helvetica,sans-serif}h1{font-size:2.5rem}h2{font-size:2rem}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:rgba(255,255,255,.15);border-radius:5px}code,span.highlight{background-color:rgba(255,255,255,.15)}span.alert{background-color:rgba(236,110,173,.58)}header{color:#fff;text-align:center;margin-top:8rem;margin-bottom:8rem}header>.grid{margin-top:3rem}header .sub-example .example--item{background:rgba(255,255,255,.6);color:#2c303a}.example--item{background:linear-gradient(45deg,#3494e6,#ec6ead);padding:1rem;border-radius:5px;text-align:center;width:100%;height:100%}.example--item p{font-size:1.2rem}.example--item.is-sticky{height:auto;position:-webkit-sticky;position:sticky;top:1rem}.example{margin-bottom:8rem}.example .grid{margin-bottom:1rem}blockquote{margin:0;background-color:rgba(255,255,255,.3);padding:1rem;border-left:.5rem solid #3494e6}a{color:#fff;border-bottom:3px solid #3494e6;box-shadow:inset 0 -5px 0 #3494e6;transition:background .3s ease-in-out;text-decoration:none}a:focus,a:hover{background:#3494e6}ul li{margin-bottom:.5rem} -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'); 2 | var sass = require("gulp-sass"); 3 | var sourcemaps = require('gulp-sourcemaps'); 4 | var autoprefixer = require('gulp-autoprefixer'); 5 | var cleanCSS = require('gulp-clean-css'); 6 | var gutil = require('gulp-util'); 7 | var rename = require('gulp-rename'); 8 | var purgeSourcemaps = require('gulp-purge-sourcemaps'); 9 | 10 | var inputScss = "./dist/scss/**/*.scss"; /*watches sub folders inside sass folder */ 11 | var output = "./static/css"; 12 | 13 | var sassOptions = { 14 | errLogToConsole: true, 15 | outputStyle: 'expanded' 16 | }; 17 | 18 | gulp.task('scss', function () { 19 | return gulp 20 | .src(inputScss) 21 | .pipe(sourcemaps.init()) 22 | .pipe(sass(sassOptions).on('error', sass.logError)) 23 | .pipe(autoprefixer({ 24 | browsers: ['last 2 versions'], 25 | browsers: ['> 1%'] 26 | })) 27 | .pipe(sourcemaps.write()) 28 | .pipe(gulp.dest(output)) 29 | .pipe(purgeSourcemaps()) 30 | .pipe(rename({ 31 | extname: '.min.css' 32 | })) 33 | .pipe(cleanCSS({ 34 | keepSpecialComments: 0 35 | })) 36 | .pipe(gulp.dest(output)); 37 | }); 38 | 39 | gulp.task('watch-scss', function () { 40 | gulp.watch(inputScss, ['scss']); 41 | gutil.log(process.version); 42 | }); 43 | -------------------------------------------------------------------------------- /dist/scss/layouts/_container.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | padding-right: 1rem; 3 | padding-left: 1rem; 4 | 5 | &:not(.is-fluid) { 6 | margin: 0 auto; 7 | 8 | @each $bp, $container-size in $container-sizes { 9 | @include min(#{bp(#{$bp})}) { 10 | width: container(#{$bp}); 11 | } 12 | } 13 | } 14 | } 15 | 16 | // ------------------------------ 17 | // KSS Documentation 18 | // ------------------------------ 19 | 20 | // Container 21 | // 22 | // Atomic Bulldog comes with two containers classes that you can choose from. One fluid container, that will take all the available space. 23 | // One fixed width container (sizes are set in variables/_container-sizes.scss). 24 | // 25 | // Styleguide Layout.Container 26 | 27 | // Container Fluid 28 | // 29 | // `.container.is-fluid` 30 | // 31 | // markup: 32 | //
33 | //
34 | // Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dolorem quisquam ea consequuntur nostrum sint. Explicabo 35 | // neque architecto sint voluptatibus ullam et ea recusandae nihil unde quos amet hic, ut iste? 36 | //
37 | //
38 | // 39 | // Styleguide Layout.Container.fluid 40 | 41 | // Container fixed 42 | // 43 | // `.container` 44 | // 45 | // Sizes are set in variables/_container-sizes.scss 46 | // 47 | // markup: 48 | //
49 | //
50 | // Lorem ipsum dolor, sit amet consectetur adipisicing elit. Dolorem quisquam ea consequuntur nostrum sint. Explicabo 51 | // neque architecto sint voluptatibus ullam et ea recusandae nihil unde quos amet hic, ut iste? 52 | //
53 | //
54 | // 55 | // Styleguide Layout.Container.fixed -------------------------------------------------------------------------------- /dist/scss/variables/_container-sizes.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // Sass Variables 3 | // ------------------------------ 4 | $container-size-prefix: --container-size-; 5 | $container-sizes: ( 6 | sm: map-get($breakpoints, sm) - 30px, 7 | md: map-get($breakpoints, md) - 40px, 8 | lg: map-get($breakpoints, lg) - 50px, 9 | xl: map-get($breakpoints, xl) - 400px 10 | ); 11 | 12 | // ------------------------------ 13 | // Set container function 14 | // ------------------------------ 15 | @function container($container-size, $true-val:false) { 16 | @if $use-css-var == true { 17 | @if $true-val == true { 18 | @return map-get($container-sizes, $container-size); //True Val 19 | } @else { 20 | @return var(#{$container-size-prefix}#{$container-size}); //CSS Var 21 | } 22 | } @else { 23 | @return map-get($container-sizes, $container-size); //Disabled CSS Var 24 | } 25 | } 26 | 27 | // ------------------------------ 28 | // Set root variables 29 | // ------------------------------ 30 | @if $use-css-var == true { 31 | #{$root-default} { 32 | @each $name, $container-size in $container-sizes { 33 | #{$container-size-prefix}#{$name}: $container-size; 34 | } 35 | } 36 | } 37 | 38 | // ------------------------------ 39 | // KSS Documentation 40 | // ------------------------------ 41 | 42 | // Container Sizes 43 | // 44 | // Container sizes are in the map `$container-sizes` 45 | // 46 | // -------- 47 | // * `sm` 48 | // * `md` 49 | // * `lg` 50 | // * `xl` 51 | // -------- 52 | // 53 | // Container Sizes can be called in the sass project using the function: 54 | // 55 | // `container($container-size, $true-val:false)`. 56 | // 57 | // Function examples to call the map: 58 | // * `container(md);` => `var(--container-size-sm);` If $use-css-var = true 59 | // * `container(md);` => `720px;` If $use-css-var = false 60 | // * `container(md, true)` => `720px;` 61 | // 62 | // Styleguide Variables.container -------------------------------------------------------------------------------- /dist/scss/NO-USE-demo-style.scss: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Lato:300,400,700'); 2 | 3 | $dark-blue: #2c303a; 4 | $blue: #3494e6; 5 | $pink: #ec6ead; 6 | $white: #ffffff; 7 | 8 | 9 | html{ 10 | font-size: 20px; 11 | } 12 | 13 | body { 14 | background-color: $dark-blue; 15 | color: $white; 16 | font-family: 'Lato', Arial, Helvetica, sans-serif; 17 | } 18 | 19 | h1{ 20 | font-size: 2.5rem; 21 | } 22 | 23 | h2{ 24 | font-size: 2rem; 25 | } 26 | 27 | :not(pre)>code[class*=language-], 28 | pre[class*=language-] { 29 | background-color: transparentize($white, 0.85); 30 | border-radius: 5px; 31 | } 32 | 33 | code, 34 | span.highlight { 35 | background-color: transparentize($white, 0.85); 36 | } 37 | 38 | span.alert{ 39 | background-color: transparentize($pink, 0.42); 40 | } 41 | 42 | header { 43 | color: $white; 44 | text-align: center; 45 | margin-top: 8rem; 46 | margin-bottom: 8rem; 47 | 48 | & > .grid{ 49 | margin-top: 3rem; 50 | } 51 | 52 | .sub-example{ 53 | .example--item{ 54 | background: transparentize($white, 0.4); 55 | color: $dark-blue; 56 | } 57 | } 58 | } 59 | 60 | .example--item { 61 | background: linear-gradient(45deg, $blue, $pink ); 62 | padding: 1rem; 63 | border-radius: 5px; 64 | text-align: center; 65 | width: 100%; 66 | height: 100%; 67 | 68 | p { 69 | font-size: 1.2rem; 70 | } 71 | 72 | &.is-sticky{ 73 | height: auto; 74 | position: sticky; 75 | top: 1rem; 76 | } 77 | } 78 | 79 | .example{ 80 | margin-bottom: 8rem; 81 | .grid{ 82 | margin-bottom: 1rem; 83 | } 84 | } 85 | 86 | blockquote{ 87 | margin: 0; 88 | background-color: transparentize($white, 0.7); 89 | padding: 1rem; 90 | border-left: 0.5rem solid $blue; 91 | } 92 | 93 | a { //[href*="//"] 94 | color: $white; 95 | border-bottom: 3px solid $blue; 96 | box-shadow: inset 0 -5px 0 $blue; 97 | transition: background .3s ease-in-out; 98 | text-decoration: none; 99 | 100 | &:hover, &:focus { 101 | background: $blue; 102 | } 103 | } 104 | 105 | ul{ 106 | li{ 107 | margin-bottom: 0.5rem; 108 | } 109 | } -------------------------------------------------------------------------------- /dist/scss/variables/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // Sass Variables 3 | // ------------------------------ 4 | $bp-prefix: --bp-; 5 | $breakpoints: ( 6 | xs: 320px, // Smartphone 7 | sm: 600px, // Tablets 8 | md: 900px, // Tablets Landscape and small desktops 9 | lg: 1200px, // Desktops 10 | xl: 1800px, // Large Desktop 11 | ); 12 | 13 | // ------------------------------ 14 | // Set bp function 15 | // ------------------------------ 16 | //Can't use CSS variables in media queries the bp var only print the value the bp-var function will print the variable 17 | @function bp($bp) { 18 | @return em(map-get($breakpoints, $bp)); 19 | } 20 | 21 | @function bp-var($bp, $true-val:false) { 22 | @if $use-css-var == true { 23 | @if $true-val == true { 24 | @return map-get($breakpoints, $bp); //True Val 25 | } @else { 26 | @return var(#{$bp-prefix}#{$bp}); //CSS Var 27 | } 28 | } @else { 29 | @return map-get($breakpoints, $bp); //Disabled CSS Var 30 | } 31 | } 32 | 33 | // ------------------------------ 34 | // Set root variables 35 | // ------------------------------ 36 | @if $use-css-var == true { 37 | #{$root-default} { 38 | @each $name, $bp in $breakpoints { 39 | #{$bp-prefix}#{$name}: $bp; //Not using em as not being use in media queries 40 | } 41 | } 42 | } 43 | 44 | // ------------------------------ 45 | // KSS Documentation 46 | // ------------------------------ 47 | 48 | // Breakpoints 49 | // 50 | // Breakpoints are in the map `$breakpoints` 51 | // 52 | // --------------- 53 | // * `xs`: 320px, // Smartphone 54 | // * `sm`: 600px, // Tablets 55 | // * `md`: 900px, // Tablets Landscape and small desktops 56 | // * `lg`: 1200px, // Desktops 57 | // * `xl`: 1800px, // Large Desktop 58 | // --------------- 59 | // 60 | // Breakpoints can be called in the sass project using the functions: 61 | // 62 | // `bp($bp)` which will output a value in em 63 | // 64 | // `bp-var($bp, $true-val:false)` which will output the CSS variable 65 | // 66 | // Usage of bp(): 67 | // * `bp(sm);` => `36em` 68 | // 69 | // Usage of bp-var(): 70 | // * `bp-var(sm);` => `var(--bp-sm);` If $use-css-var = true 71 | // * `bp-var(sm);` => `576px;` If $use-css-var = false 72 | // * `bp-var(sm, true)` => `576px;` 73 | // 74 | // Styleguide Variables.breakpoints 75 | -------------------------------------------------------------------------------- /dist/scss/variables/_spacers.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // Sass Variables 3 | // ------------------------------ 4 | $spacer-reference: 1rem; 5 | $spacer-prefix: --spacer-; 6 | $spacers: ( 7 | 0: 0, 8 | 1: ($spacer-reference * 0.25), 9 | 2: ($spacer-reference * 0.5), 10 | 3: $spacer-reference, 11 | 4: ($spacer-reference * 1.25), 12 | 5: ($spacer-reference * 1.5), 13 | 6: ($spacer-reference * 3), 14 | 7: ($spacer-reference * 6), 15 | 8: ($spacer-reference * 9), 16 | 9: ($spacer-reference * 12) 17 | ); 18 | 19 | // ------------------------------ 20 | // Set spacer function 21 | // ------------------------------ 22 | @function spacer($spacer, $true-val:false) { 23 | @if $use-css-var == true { 24 | @if $true-val == true { 25 | @return map-get($spacers, $spacer); //True Val 26 | } @else { 27 | @return var(#{$spacer-prefix}#{$spacer}); //CSS Var 28 | } 29 | } @else { 30 | @return map-get($spacers, $spacer); //Disabled CSS Var 31 | } 32 | } 33 | 34 | // ------------------------------ 35 | // Set root variables 36 | // ------------------------------ 37 | @if $use-css-var == true { 38 | #{$root-default} { 39 | @each $name, $spacer in $spacers { 40 | #{$spacer-prefix}#{$name}: $spacer; 41 | } 42 | } 43 | } 44 | 45 | // ------------------------------ 46 | //KSS Documentation 47 | // ------------------------------ 48 | 49 | // Spacers 50 | // 51 | // Spacers is use to for padding and margin grid-gap in the project. The base value is set with $spacer-reference (1rem) 52 | // 53 | // --------------- 54 | // * `0`: 0, 55 | // * `1`: ($spacer-reference * 0.25), 56 | // * `2`: ($spacer-reference * 0.5), 57 | // * `3`: $spacer-reference, 58 | // * `4`: ($spacer-reference * 1.25), 59 | // * `5`: ($spacer-reference * 1.5), 60 | // * `6`: ($spacer-reference * 3), 61 | // * `7`: ($spacer-reference * 6), 62 | // * `8`: ($spacer-reference * 9), 63 | // * `9`: ($spacer-reference * 12) 64 | // --------------- 65 | // 66 | // spacer sizes can be called in the sass project using the functions: 67 | // 68 | // `spacer($spacer, $true-val:false)` which will output by default the CSS variable 69 | // 70 | // Usage of grid-item-size(): 71 | // * `spacer(4)` => `var(--spacer-4)` If $use-css-var = true 72 | // * `spacer(4)` => `1.25rem` If $use-css-var = false 73 | // * `spacer(4, true)` => `1.25rem` 74 | // 75 | // Styleguide Variables.Spacers -------------------------------------------------------------------------------- /dist/scss/mixins/_media-queries.scss: -------------------------------------------------------------------------------- 1 | /*Min and Max mixins*/ 2 | @mixin min($bp, $max: "null", $device: "screen") { 3 | @if $max == "null" { 4 | @media only #{$device} and (min-width: #{$bp}) { 5 | @content; 6 | } 7 | } @else { 8 | @media only #{$device} and (min-width: #{$bp}) and (max-width: #{$max}) { 9 | @content; 10 | } 11 | } 12 | } 13 | 14 | @mixin max($bp, $min: "null", $device: "screen") { 15 | @if $min == "null" { 16 | @media only #{$device} and (max-width: #{$bp}) { 17 | @content; 18 | } 19 | } @else { 20 | @media only #{$device} and (max-width: #{$bp}) and (min-width: #{$min}) { 21 | @content; 22 | } 23 | } 24 | } 25 | 26 | // ------------------------------ 27 | // KSS Documentation 28 | // ------------------------------ 29 | 30 | // min(#{bp(your bp)}){} 31 | // 32 | // `@include min($bp, $max: "null", $device: "screen"){}` 33 | // 34 | // Parameters: 35 | // * `$bp` - Breakpoints are defines in the map variables `$breakpoints`, breakpoints can be called with the function `bp()`. As we call a function 36 | // inside a mixin we will need to use sass interpolation, `#{bp()}`. This will return a value in em. 37 | // * `$max` - Optional max value, using $breakpoints map 38 | // * `$device` - Default screen 39 | // 40 | // Usage: 41 | // * `h2{@include min(#{bp(sm)}){font-size: font-size(2);}}` 42 | // 43 | // Output: 44 | // * `@media only screen and (min-width: 36em) {h2{font-size: 2.5rem;}` 45 | // 46 | // Styleguide Mixins.min 47 | 48 | // ------------------------------ 49 | ///////////////////////////////// 50 | // ------------------------------ 51 | 52 | // max(#{bp(your bp)}){} 53 | // 54 | // `@include max($bp, $min: "null", $device: "screen"){}` 55 | // 56 | // /!\ Atomic Bulldog is mobile first, it is not recommended to use max media queries 57 | // 58 | // Parameters: 59 | // * `$bp` - Breakpoints are defines in the map variables `$breakpoints`, breakpoints can be called with the function `bp()`. As we call a function 60 | // inside a mixin we will need to use sass interpolation, `#{bp()}`. This will return a value in em. 61 | // * `$min` - Optional min value, using $breakpoints map 62 | // * `$device` - Default screen 63 | // 64 | // Usage: 65 | // * `h2{@include max(#{bp(sm)}){font-size: font-size(2);}}` 66 | // 67 | // Output: 68 | // * `@media only screen and (max-width: 36em) {h2{font-size: 2.5rem;}` 69 | // 70 | // Styleguide Mixins.max -------------------------------------------------------------------------------- /dist/scss/layouts/_grid-fallback-ie.scss: -------------------------------------------------------------------------------- 1 | /* Progressive Enhancement for browsers not supporting grid except IE */ 2 | 3 | *, *::before, *::after{ 4 | box-sizing: border-box; 5 | } 6 | 7 | /* IE10 and 11 Fallback to be remove when < 1%*/ 8 | @media screen and (-ms-high-contrast: active), 9 | screen and (-ms-high-contrast: none) { 10 | .grid { 11 | display: flex; 12 | flex-wrap: wrap; 13 | flex-direction: row; 14 | margin-right: (spacer(1, true) * -1) / 2; 15 | margin-left: (spacer(1, true) * -1) / 2; 16 | 17 | & > * { 18 | flex: 0 0 percentage(1 / $grid-columns); 19 | max-width: percentage(1 / $grid-columns); 20 | min-height: 1px; 21 | padding-right: spacer(1, true) / 2; 22 | padding-left: spacer(1, true) / 2; 23 | margin-bottom: spacer(1, true); 24 | } 25 | 26 | @each $key, $spacer in $spacers { 27 | &.has-grid-gap-#{$key} { 28 | margin-right: (spacer($key, true) * -1) / 2; 29 | margin-left: (spacer($key, true) * -1) / 2; 30 | 31 | & > * { 32 | padding-right: spacer($key, true) / 2; 33 | padding-left: spacer($key, true) / 2; 34 | margin-bottom: spacer($key, true); 35 | } 36 | } 37 | } 38 | 39 | @for $i from 1 through $grid-columns { 40 | &.has-cols-#{$i} { 41 | & > * { 42 | flex: 0 0 percentage(1 / $i); 43 | max-width: percentage(1 / $i); 44 | } 45 | } 46 | } 47 | 48 | @each $bp, $bpKey in $breakpoints { 49 | @include min(#{bp(#{$bp})}) { 50 | @each $key, $spacer in $spacers { 51 | &.has-grid-gap-#{$bp}-#{$key} { 52 | margin-right: (spacer($key, true) * -1) / 2; 53 | margin-left: (spacer($key, true) * -1) / 2; 54 | 55 | & > * { 56 | padding-right: spacer($key, true) / 2; 57 | padding-left: spacer($key, true) / 2; 58 | margin-bottom: spacer($key, true); 59 | } 60 | } 61 | } 62 | 63 | @for $i from 1 through $grid-columns { 64 | &.has-cols-#{$bp}-#{$i} { 65 | & > * { 66 | flex: 0 0 percentage(1 / $i); 67 | max-width: percentage(1 / $i); 68 | } 69 | } 70 | } 71 | } 72 | } 73 | } 74 | } 75 | 76 | // ------------------------------ 77 | // KSS Documentation 78 | // ------------------------------ 79 | 80 | // Doc in _grid-fallback.scss -------------------------------------------------------------------------------- /dist/scss/layouts/_grid-fallback.scss: -------------------------------------------------------------------------------- 1 | /* Progressive Enhancement for browsers not supporting grid except IE */ 2 | 3 | *, *::before, *::after{ 4 | box-sizing: border-box; 5 | } 6 | 7 | @supports not (display: grid) { 8 | @supports (display: flex) { 9 | .grid { 10 | display: flex; 11 | flex-wrap: wrap; 12 | flex-direction: row; 13 | margin-right: (spacer(1, true) * -1) / 2; 14 | margin-left: (spacer(1, true) * -1) / 2; 15 | 16 | & > * { 17 | flex: 0 0 percentage(1 / $grid-columns); 18 | max-width: percentage(1 / $grid-columns); 19 | min-height: 1px; 20 | padding-right: spacer(1, true) / 2; 21 | padding-left: spacer(1, true) / 2; 22 | margin-bottom: spacer(1, true); 23 | } 24 | 25 | @each $key, $spacer in $spacers { 26 | &.has-grid-gap-#{$key} { 27 | margin-right: (spacer($key, true) * -1) / 2; 28 | margin-left: (spacer($key, true) * -1) / 2; 29 | 30 | & > * { 31 | padding-right: spacer($key, true) / 2; 32 | padding-left: spacer($key, true) / 2; 33 | margin-bottom: spacer($key, true); 34 | } 35 | } 36 | } 37 | 38 | @for $i from 1 through $grid-columns { 39 | &.has-cols-#{$i} { 40 | & > * { 41 | flex: 0 0 percentage(1 / $i); 42 | max-width: percentage(1 / $i); 43 | } 44 | } 45 | } 46 | 47 | @each $bp, $bpKey in $breakpoints { 48 | @include min(#{bp(#{$bp})}) { 49 | @each $key, $spacer in $spacers { 50 | &.has-grid-gap-#{$bp}-#{$key} { 51 | margin-right: (spacer($key, true) * -1) / 2; 52 | margin-left: (spacer($key, true) * -1) / 2; 53 | 54 | & > * { 55 | padding-right: spacer($key, true) / 2; 56 | padding-left: spacer($key, true) / 2; 57 | margin-bottom: spacer($key, true); 58 | } 59 | } 60 | } 61 | 62 | @for $i from 1 through $grid-columns { 63 | &.has-cols-#{$bp}-#{$i} { 64 | & > * { 65 | flex: 0 0 percentage(1 / $i); 66 | max-width: percentage(1 / $i); 67 | } 68 | } 69 | } 70 | } 71 | } 72 | } 73 | } 74 | } 75 | 76 | // ------------------------------ 77 | // KSS Documentation 78 | // ------------------------------ 79 | 80 | // Grid Fallback 81 | // 82 | // Atomic Bulldog grid use progressive enhancement for browsers not supporting CSS grid layout. It will use an alternative grid base on flexbox. Not all classes are supported. 83 | // 84 | // This grid will compile in screen-fallback.css 85 | // 86 | // For now the fallback grid only works with the following classes: 87 | // * `.grid` 88 | // * `.has-cols-{bp}-{num-of-col}` 89 | // * `.has-grid-gap-{num}` 90 | // 91 | // 92 | // Try to see this page on IE: 11. 93 | // 94 | //

95 | // Can I Use flexbox? Data on support for the flexbox feature across the major browsers from caniuse.com. 96 | //

97 | // 98 | // Styleguide Layout.Grid.z 99 | -------------------------------------------------------------------------------- /static/css/NO-USE-demo-style.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Lato:300,400,700"); 2 | html { 3 | font-size: 20px; 4 | } 5 | 6 | body { 7 | background-color: #2c303a; 8 | color: #ffffff; 9 | font-family: 'Lato', Arial, Helvetica, sans-serif; 10 | } 11 | 12 | h1 { 13 | font-size: 2.5rem; 14 | } 15 | 16 | h2 { 17 | font-size: 2rem; 18 | } 19 | 20 | :not(pre) > code[class*=language-], 21 | pre[class*=language-] { 22 | background-color: rgba(255, 255, 255, 0.15); 23 | border-radius: 5px; 24 | } 25 | 26 | code, 27 | span.highlight { 28 | background-color: rgba(255, 255, 255, 0.15); 29 | } 30 | 31 | span.alert { 32 | background-color: rgba(236, 110, 173, 0.58); 33 | } 34 | 35 | header { 36 | color: #ffffff; 37 | text-align: center; 38 | margin-top: 8rem; 39 | margin-bottom: 8rem; 40 | } 41 | 42 | header > .grid { 43 | margin-top: 3rem; 44 | } 45 | 46 | header .sub-example .example--item { 47 | background: rgba(255, 255, 255, 0.6); 48 | color: #2c303a; 49 | } 50 | 51 | .example--item { 52 | background: linear-gradient(45deg, #3494e6, #ec6ead); 53 | padding: 1rem; 54 | border-radius: 5px; 55 | text-align: center; 56 | width: 100%; 57 | height: 100%; 58 | } 59 | 60 | .example--item p { 61 | font-size: 1.2rem; 62 | } 63 | 64 | .example--item.is-sticky { 65 | height: auto; 66 | position: -webkit-sticky; 67 | position: sticky; 68 | top: 1rem; 69 | } 70 | 71 | .example { 72 | margin-bottom: 8rem; 73 | } 74 | 75 | .example .grid { 76 | margin-bottom: 1rem; 77 | } 78 | 79 | blockquote { 80 | margin: 0; 81 | background-color: rgba(255, 255, 255, 0.3); 82 | padding: 1rem; 83 | border-left: 0.5rem solid #3494e6; 84 | } 85 | 86 | a { 87 | color: #ffffff; 88 | border-bottom: 3px solid #3494e6; 89 | box-shadow: inset 0 -5px 0 #3494e6; 90 | transition: background .3s ease-in-out; 91 | text-decoration: none; 92 | } 93 | 94 | a:hover, a:focus { 95 | background: #3494e6; 96 | } 97 | 98 | ul li { 99 | margin-bottom: 0.5rem; 100 | } 101 | 102 | /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5PLVVTRS1kZW1vLXN0eWxlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0VBQVk7QUFRWjtFQUNFLGdCQUFlO0NBQ2hCOztBQUVEO0VBQ0UsMEJBWGlCO0VBWWpCLGVBVGE7RUFVYixrREFBaUQ7Q0FDbEQ7O0FBRUQ7RUFDRSxrQkFBaUI7Q0FDbEI7O0FBRUQ7RUFDRSxnQkFBZTtDQUNoQjs7QUFFRDs7RUFFRSw0Q0FBOEM7RUFDOUMsbUJBQWtCO0NBQ25COztBQUVEOztFQUVFLDRDQUE4QztDQUMvQzs7QUFFRDtFQUNFLDRDQUE2QztDQUM5Qzs7QUFFRDtFQUNFLGVBckNhO0VBc0NiLG1CQUFrQjtFQUNsQixpQkFBZ0I7RUFDaEIsb0JBQW1CO0NBWXBCOztBQWhCRDtFQU9JLGlCQUFnQjtDQUNqQjs7QUFSSDtFQVlNLHFDQUF1QztFQUN2QyxlQXBEYTtDQXFEZDs7QUFJTDtFQUNFLHFEQUFpRDtFQUNqRCxjQUFhO0VBQ2IsbUJBQWtCO0VBQ2xCLG1CQUFrQjtFQUNsQixZQUFXO0VBQ1gsYUFBWTtDQVdiOztBQWpCRDtFQVNJLGtCQUFpQjtDQUNsQjs7QUFWSDtFQWFJLGFBQVk7RUFDWix5QkFBZ0I7RUFBaEIsaUJBQWdCO0VBQ2hCLFVBQVM7Q0FDVjs7QUFHSDtFQUNFLG9CQUFtQjtDQUlwQjs7QUFMRDtFQUdJLG9CQUFtQjtDQUNwQjs7QUFHSDtFQUNFLFVBQVM7RUFDVCwyQ0FBNkM7RUFDN0MsY0FBYTtFQUNiLGtDQXRGWTtDQXVGYjs7QUFFRDtFQUNFLGVBeEZhO0VBeUZiLGlDQTNGWTtFQTRGWixtQ0E1Rlk7RUE2RlosdUNBQXNDO0VBQ3RDLHNCQUFxQjtDQUt0Qjs7QUFWRDtFQVFJLG9CQWpHVTtDQWtHWDs7QUFHSDtFQUVJLHNCQUFxQjtDQUN0QiIsImZpbGUiOiJOTy1VU0UtZGVtby1zdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PUxhdG86MzAwLDQwMCw3MDAnKTtcclxuXHJcbiRkYXJrLWJsdWU6ICMyYzMwM2E7XHJcbiRibHVlOiAjMzQ5NGU2O1xyXG4kcGluazogI2VjNmVhZDtcclxuJHdoaXRlOiAjZmZmZmZmO1xyXG5cclxuXHJcbmh0bWx7XHJcbiAgZm9udC1zaXplOiAyMHB4O1xyXG59XHJcblxyXG5ib2R5IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGFyay1ibHVlO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZm9udC1mYW1pbHk6ICdMYXRvJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuaDF7XHJcbiAgZm9udC1zaXplOiAyLjVyZW07XHJcbn1cclxuXHJcbmgye1xyXG4gIGZvbnQtc2l6ZTogMnJlbTtcclxufVxyXG5cclxuOm5vdChwcmUpPmNvZGVbY2xhc3MqPWxhbmd1YWdlLV0sXHJcbnByZVtjbGFzcyo9bGFuZ3VhZ2UtXSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjg1KTtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuXHJcbmNvZGUsXHJcbnNwYW4uaGlnaGxpZ2h0IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuODUpO1xyXG59XHJcblxyXG5zcGFuLmFsZXJ0e1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRwaW5rLCAwLjQyKTtcclxufVxyXG5cclxuaGVhZGVyIHtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtYXJnaW4tdG9wOiA4cmVtO1xyXG4gIG1hcmdpbi1ib3R0b206IDhyZW07XHJcblxyXG4gICYgPiAuZ3JpZHtcclxuICAgIG1hcmdpbi10b3A6IDNyZW07XHJcbiAgfVxyXG5cclxuICAuc3ViLWV4YW1wbGV7XHJcbiAgICAuZXhhbXBsZS0taXRlbXtcclxuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnRpemUoJHdoaXRlLCAwLjQpO1xyXG4gICAgICBjb2xvcjogJGRhcmstYmx1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5leGFtcGxlLS1pdGVtIHtcclxuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsICRibHVlLCAkcGluayApO1xyXG4gIHBhZGRpbmc6IDFyZW07IFxyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICBwIHtcclxuICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1zdGlja3l7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgdG9wOiAxcmVtO1xyXG4gIH1cclxufVxyXG5cclxuLmV4YW1wbGV7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHJlbTtcclxuICAuZ3JpZHtcclxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XHJcbiAgfVxyXG59XHJcblxyXG5ibG9ja3F1b3Rle1xyXG4gIG1hcmdpbjogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudGl6ZSgkd2hpdGUsIDAuNyk7XHJcbiAgcGFkZGluZzogMXJlbTtcclxuICBib3JkZXItbGVmdDogMC41cmVtIHNvbGlkICRibHVlO1xyXG59XHJcblxyXG5hIHsgLy9baHJlZio9XCIvL1wiXVxyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRibHVlO1xyXG4gIGJveC1zaGFkb3c6IGluc2V0IDAgLTVweCAwICRibHVlO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgLjNzIGVhc2UtaW4tb3V0O1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHJcbiAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICBiYWNrZ3JvdW5kOiAkYmx1ZTtcclxuICB9XHJcbn1cclxuXHJcbnVse1xyXG4gIGxpe1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG4gIH1cclxufSJdfQ== */ 103 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # .NET Core 46 | project.lock.json 47 | project.fragment.lock.json 48 | artifacts/ 49 | **/Properties/launchSettings.json 50 | 51 | *_i.c 52 | *_p.c 53 | *_i.h 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.tmp_proj 68 | *.log 69 | *.vspscc 70 | *.vssscc 71 | .builds 72 | *.pidb 73 | *.svclog 74 | *.scc 75 | 76 | # Chutzpah Test files 77 | _Chutzpah* 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opendb 84 | *.opensdf 85 | *.sdf 86 | *.cachefile 87 | *.VC.db 88 | *.VC.VC.opendb 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | *.sap 95 | 96 | # TFS 2012 Local Workspace 97 | $tf/ 98 | 99 | # Guidance Automation Toolkit 100 | *.gpState 101 | 102 | # ReSharper is a .NET coding add-in 103 | _ReSharper*/ 104 | *.[Rr]e[Ss]harper 105 | *.DotSettings.user 106 | 107 | # JustCode is a .NET coding add-in 108 | .JustCode 109 | 110 | # TeamCity is a build add-in 111 | _TeamCity* 112 | 113 | # DotCover is a Code Coverage Tool 114 | *.dotCover 115 | 116 | # Visual Studio code coverage results 117 | *.coverage 118 | *.coveragexml 119 | 120 | # NCrunch 121 | _NCrunch_* 122 | .*crunch*.local.xml 123 | nCrunchTemp_* 124 | 125 | # MightyMoose 126 | *.mm.* 127 | AutoTest.Net/ 128 | 129 | # Web workbench (sass) 130 | .sass-cache/ 131 | 132 | # Installshield output folder 133 | [Ee]xpress/ 134 | 135 | # DocProject is a documentation generator add-in 136 | DocProject/buildhelp/ 137 | DocProject/Help/*.HxT 138 | DocProject/Help/*.HxC 139 | DocProject/Help/*.hhc 140 | DocProject/Help/*.hhk 141 | DocProject/Help/*.hhp 142 | DocProject/Help/Html2 143 | DocProject/Help/html 144 | 145 | # Click-Once directory 146 | publish/ 147 | 148 | # Publish Web Output 149 | *.[Pp]ublish.xml 150 | *.azurePubxml 151 | # TODO: Comment the next line if you want to checkin your web deploy settings 152 | # but database connection strings (with potential passwords) will be unencrypted 153 | *.pubxml 154 | *.publishproj 155 | 156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 157 | # checkin your Azure Web App publish settings, but sensitive information contained 158 | # in these scripts will be unencrypted 159 | PublishScripts/ 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # NuGet v3's project.json files produces more ignorable files 170 | *.nuget.props 171 | *.nuget.targets 172 | 173 | # Microsoft Azure Build Output 174 | csx/ 175 | *.build.csdef 176 | 177 | # Microsoft Azure Emulator 178 | ecf/ 179 | rcf/ 180 | 181 | # Windows Store app package directories and files 182 | AppPackages/ 183 | BundleArtifacts/ 184 | Package.StoreAssociation.xml 185 | _pkginfo.txt 186 | 187 | # Visual Studio cache files 188 | # files ending in .cache can be ignored 189 | *.[Cc]ache 190 | # but keep track of directories ending in .cache 191 | !*.[Cc]ache/ 192 | 193 | # Others 194 | ClientBin/ 195 | ~$* 196 | *~ 197 | *.dbmdl 198 | *.dbproj.schemaview 199 | *.jfm 200 | *.pfx 201 | *.publishsettings 202 | orleans.codegen.cs 203 | 204 | # Since there are multiple workflows, uncomment next line to ignore bower_components 205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 206 | #bower_components/ 207 | 208 | # RIA/Silverlight projects 209 | Generated_Code/ 210 | 211 | # Backup & report files from converting an old project file 212 | # to a newer Visual Studio version. Backup files are not needed, 213 | # because we have git ;-) 214 | _UpgradeReport_Files/ 215 | Backup*/ 216 | UpgradeLog*.XML 217 | UpgradeLog*.htm 218 | 219 | # SQL Server files 220 | *.mdf 221 | *.ldf 222 | *.ndf 223 | 224 | # Business Intelligence projects 225 | *.rdl.data 226 | *.bim.layout 227 | *.bim_*.settings 228 | 229 | # Microsoft Fakes 230 | FakesAssemblies/ 231 | 232 | # GhostDoc plugin setting file 233 | *.GhostDoc.xml 234 | 235 | # Node.js Tools for Visual Studio 236 | .ntvs_analysis.dat 237 | node_modules/ 238 | 239 | # Typescript v1 declaration files 240 | typings/ 241 | 242 | # Visual Studio 6 build log 243 | *.plg 244 | 245 | # Visual Studio 6 workspace options file 246 | *.opt 247 | 248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 249 | *.vbw 250 | 251 | # Visual Studio LightSwitch build output 252 | **/*.HTMLClient/GeneratedArtifacts 253 | **/*.DesktopClient/GeneratedArtifacts 254 | **/*.DesktopClient/ModelManifest.xml 255 | **/*.Server/GeneratedArtifacts 256 | **/*.Server/ModelManifest.xml 257 | _Pvt_Extensions 258 | 259 | # Paket dependency manager 260 | .paket/paket.exe 261 | paket-files/ 262 | 263 | # FAKE - F# Make 264 | .fake/ 265 | 266 | # JetBrains Rider 267 | .idea/ 268 | *.sln.iml 269 | 270 | # CodeRush 271 | .cr/ 272 | 273 | # Python Tools for Visual Studio (PTVS) 274 | __pycache__/ 275 | *.pyc 276 | 277 | # Cake - Uncomment if you are using it 278 | # tools/** 279 | # !tools/packages.config 280 | 281 | # Telerik's JustMock configuration file 282 | *.jmconfig 283 | 284 | # BizTalk build output 285 | *.btp.cs 286 | *.btm.cs 287 | *.odx.cs 288 | *.xsd.cs 289 | -------------------------------------------------------------------------------- /dist/scss/layouts/_grid.scss: -------------------------------------------------------------------------------- 1 | // ------------------------------ 2 | // Grid, using CSS Grid Layout 3 | // ------------------------------ 4 | //Main Grid 5 | @supports (display: grid) { 6 | .grid { 7 | display: grid; 8 | grid-template-columns: repeat($grid-columns, minmax(0, 1fr)); 9 | grid-gap: spacer(1); 10 | 11 | &.is-dense{ 12 | grid-auto-flow: dense; 13 | } 14 | 15 | .has-col-all { 16 | grid-column: 1 / -1; 17 | } 18 | 19 | .has-row-all { 20 | grid-row: 1 / -1; 21 | } 22 | 23 | @for $i from 1 through $grid-columns { 24 | .has-col-#{$i} { 25 | grid-column: span $i; 26 | } 27 | 28 | &.has-cols-#{$i} { 29 | grid-template-columns: repeat($i, minmax(0, 1fr)); 30 | } 31 | } 32 | 33 | @for $i from 1 through 10 { 34 | .has-row-#{$i} { 35 | grid-row: span $i; 36 | } 37 | } 38 | 39 | @each $key, $spacer in $spacers { 40 | &.has-grid-gap-#{$key} { 41 | grid-gap: spacer($key); 42 | } 43 | } 44 | 45 | // Set grid responsive classes 46 | @each $bp, $bpKey in $breakpoints { 47 | @include min(#{bp(#{$bp})}) { 48 | // Full col item 49 | .has-col-#{$bp}-all { 50 | grid-column: 1 / -1; 51 | } 52 | 53 | // Full row item 54 | .has-row-#{$bp}-all { 55 | grid-row: 1 / -1; 56 | } 57 | 58 | // Set number of col 59 | @for $i from 1 through $grid-columns { 60 | .has-col-#{$bp}-#{$i} { 61 | grid-column: span $i; 62 | } 63 | 64 | &.has-cols-#{$bp}-#{$i} { 65 | grid-template-columns: repeat($i, minmax(0, 1fr)); 66 | } 67 | } 68 | 69 | // Set number of row 70 | @for $i from 1 through $grid-columns { 71 | .has-row-#{$bp}-#{$i} { 72 | grid-row: span $i; 73 | } 74 | } 75 | 76 | // Set grid gap 77 | @each $key, $spacer in $spacers { 78 | &.has-grid-gap-#{$bp}-#{$key} { 79 | grid-gap: spacer($key); 80 | } 81 | } 82 | } 83 | } 84 | } 85 | } 86 | 87 | // ------------------------------ 88 | // KSS Documentation 89 | // ------------------------------ 90 | 91 | // Grid 92 | // 93 | // Atomic Bulldog uses CSS grid layout for its grid. It only applies this grid to supported browsers using the [CSS `@supports`](https://developer.mozilla.org/en-US/docs/Web/CSS/%40supports) rule. 94 | // 95 | // See `Grid fallback` if you need to use the fallback grid. 96 | // 97 | //

98 | // Can I Use css-grid? Data on support for the css-grid feature across the major browsers from caniuse.com. 99 | //

100 | //

101 | // Can I Use css-supports-api? Data on support for the css-supports-api feature across the major browsers from caniuse.com. 102 | //

103 | // 104 | // The grid is by default 12 columns base, This grid is two dimensional, meaning grid items can grow in the horizontal axis (has-col-{breakpoint}-{size}) and on the vertical axis (has-row-{breakpoint}-{size}). 105 | // 106 | // {breakpoint} is set from the `$breakpoints` map (see variables), {size} is set as well in variables. It goes from 0 to 12 ($grid-columns) by default or 0 up to 12 base on the number of columns set using `.has-cols-{bp}-{size}` 107 | // 108 | // markup: 109 | //
110 | //
111 | //
1
112 | //
113 | //
114 | //
2
115 | //
116 | //
117 | //
3
118 | //
119 | //
120 | //
4
121 | //
122 | //
123 | //
5
124 | //
125 | //
126 | //
6
127 | //
128 | //
129 | // 130 | // Styleguide Layout.Grid 131 | 132 | // ------------------------------ 133 | ///////////////////////////////// 134 | // ------------------------------ 135 | 136 | // Grid - Set number of columns 137 | // 138 | // The number of columns can be change by adding .has-cols-{bp}-{num-of-cols}. bp is optional, number of columns goes from 1 to 12. 139 | // 140 | // {breakpoint} is set from the `$breakpoints` map (see variables), {size} are set as well in variables. It goes from 0 to 12 ($grid-columns). 141 | // 142 | // Resize the window to see changes. 143 | // 144 | // markup: 145 | //
146 | //
147 | //
1
148 | //
149 | //
150 | //
2
151 | //
152 | //
153 | //
3
154 | //
155 | //
156 | //
4
157 | //
158 | //
159 | //
5
160 | //
161 | //
162 | //
6
163 | //
164 | //
165 | //
7
166 | //
167 | //
168 | //
8
169 | //
170 | //
171 | //
9
172 | //
173 | //
174 | //
10
175 | //
176 | //
177 | // 178 | // .has-cols-md-1 - 1 col layout 179 | // .has-cols-md-2 - 2 cols layout 180 | // .has-cols-md-3 - 3 cols layout 181 | // .has-cols-md-4 - 4 cols layout 182 | // .has-cols-md-5 - 5 cols layout 183 | // .has-cols-md-6 - 6 cols layout 184 | // .has-cols-md-7 - 7 cols layout 185 | // .has-cols-md-8 - 8 cols layout 186 | // .has-cols-md-9 - 9 cols layout 187 | // .has-cols-md-10 - 10 cols layout 188 | // .has-cols-md-11 - 11 cols layout 189 | // .has-cols-md-12 - 12 cols layout 190 | // 191 | // Styleguide Layout.Grid.b 192 | 193 | // ------------------------------ 194 | ///////////////////////////////// 195 | // ------------------------------ 196 | 197 | // Grid Modifiers 198 | // 199 | // Styleguide Layout.Grid.modifiers 200 | 201 | // ------------------------------ 202 | ///////////////////////////////// 203 | // ------------------------------ 204 | 205 | // Grid dense 206 | // 207 | // `.is-dense` with `grid` will make the grid dense. 208 | 209 | // > Is a keyword specifying that the auto-placement algorithm uses a “dense” packing algorithm, which attempts to fill in holes earlier in the grid, if smaller items come up later. This may cause items to appear out-of-order, when doing so would fill in holes left by larger items. 210 | 211 | // https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow 212 | // 213 | // Styleguide Layout.Grid.modifiers 214 | 215 | // Row 216 | // 217 | // Rows can be expended using the class `has-row-{breakpoint}-{size}`. Sizes go from 0 to 12. .has-row-all can be used as well but in this case, the grid needs to have 218 | //`grid-template-rows` set, so the can grow depending on the number of rows. 219 | // 220 | // There is no fallback for these classes. 221 | // 222 | // markup: 223 | //
224 | //
225 | //
1
226 | //
227 | //
228 | //
2
229 | //
230 | //
231 | //
3
232 | //
233 | //
234 | //
4
235 | //
236 | //
237 | //
5
238 | //
239 | //
240 | //
6
241 | //
242 | //
243 | //
7
244 | //
245 | //
246 | //
8
247 | //
248 | //
249 | //
9
250 | //
251 | //
252 | //
10
253 | //
254 | //
255 | // 256 | // Styleguide Layout.Grid.modifiers.row 257 | 258 | // ------------------------------ 259 | ///////////////////////////////// 260 | // ------------------------------ 261 | 262 | // Col 263 | // 264 | // Columns can be expended using the class `has-col-{breakpoint}-{size}`. Sizes go from 0 to 12. .has-col-all can be used as well, grid item will then take the full width. 265 | // 266 | // markup: 267 | //
268 | //
269 | //
1
270 | //
271 | //
272 | //
2
273 | //
274 | //
275 | //
3
276 | //
277 | //
278 | //
4
279 | //
280 | //
281 | //
5
282 | //
283 | //
284 | //
6
285 | //
286 | //
287 | //
7
288 | //
289 | //
290 | //
8
291 | //
292 | //
293 | //
9
294 | //
295 | //
296 | //
10
297 | //
298 | //
299 | // 300 | // Styleguide Layout.Grid.modifiers.col 301 | 302 | // ------------------------------ 303 | ///////////////////////////////// 304 | // ------------------------------ 305 | 306 | // Gaps 307 | // 308 | // Grid gap can be change using `.has-grid-gap-{size}` class. This class use the $spacers map variables 309 | // 310 | // markup: 311 | //
312 | //
313 | //
1
314 | //
315 | //
316 | //
2
317 | //
318 | //
319 | //
3
320 | //
321 | //
322 | //
4
323 | //
324 | //
325 | //
5
326 | //
327 | //
328 | //
6
329 | //
330 | //
331 | //
7
332 | //
333 | //
334 | //
8
335 | //
336 | //
337 | //
9
338 | //
339 | //
340 | //
10
341 | //
342 | //
343 | // 344 | // .has-grid-gap-0 - Grid Gap 0 345 | // .has-grid-gap-1 - Grid Gap 1 346 | // .has-grid-gap-2 - Grid Gap 2 347 | // .has-grid-gap-3 - Grid Gap 3 348 | // .has-grid-gap-4 - Grid Gap 4 349 | // .has-grid-gap-5 - Grid Gap 5 350 | // .has-grid-gap-6 - Grid Gap 6 351 | // 352 | // Styleguide Layout.Grid.modifiers.gap 353 | -------------------------------------------------------------------------------- /static/css/atomic-bulldog-grid-fallback.min.css: -------------------------------------------------------------------------------- 1 | *,::after,::before{box-sizing:border-box}@supports not (display:grid){@supports (display:flex){.grid{display:flex;flex-wrap:wrap;flex-direction:row;margin-right:-.125rem;margin-left:-.125rem}.grid>*{flex:0 0 8.33333%;max-width:8.33333%;min-height:1px;padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-0{margin-right:0;margin-left:0}.grid.has-grid-gap-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-12>*{flex:0 0 8.33333%;max-width:8.33333%}@media only screen and (min-width:20em){.grid.has-grid-gap-xs-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xs-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xs-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xs-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xs-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xs-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xs-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xs-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xs-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xs-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xs-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xs-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xs-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xs-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xs-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xs-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xs-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xs-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xs-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xs-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xs-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xs-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xs-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xs-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xs-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xs-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xs-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xs-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xs-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xs-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xs-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xs-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:37.5em){.grid.has-grid-gap-sm-0{margin-right:0;margin-left:0}.grid.has-grid-gap-sm-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-sm-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-sm-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-sm-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-sm-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-sm-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-sm-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-sm-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-sm-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-sm-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-sm-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-sm-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-sm-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-sm-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-sm-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-sm-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-sm-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-sm-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-sm-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-sm-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-sm-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-sm-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-sm-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-sm-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-sm-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-sm-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-sm-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-sm-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-sm-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:56.25em){.grid.has-grid-gap-md-0{margin-right:0;margin-left:0}.grid.has-grid-gap-md-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-md-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-md-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-md-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-md-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-md-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-md-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-md-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-md-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-md-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-md-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-md-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-md-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-md-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-md-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-md-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-md-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-md-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-md-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-md-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-md-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-md-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-md-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-md-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-md-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-md-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-md-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-md-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-md-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:75em){.grid.has-grid-gap-lg-0{margin-right:0;margin-left:0}.grid.has-grid-gap-lg-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-lg-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-lg-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-lg-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-lg-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-lg-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-lg-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-lg-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-lg-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-lg-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-lg-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-lg-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-lg-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-lg-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-lg-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-lg-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-lg-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-lg-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-lg-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-lg-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-lg-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-lg-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-lg-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-lg-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-lg-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-lg-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-lg-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-lg-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-lg-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (min-width:112.5em){.grid.has-grid-gap-xl-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xl-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xl-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xl-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xl-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xl-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xl-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xl-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xl-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xl-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xl-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xl-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xl-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xl-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xl-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xl-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xl-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xl-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xl-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xl-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xl-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xl-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xl-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xl-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xl-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xl-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xl-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xl-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xl-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xl-12>*{flex:0 0 8.33333%;max-width:8.33333%}}}} -------------------------------------------------------------------------------- /static/css/atomic-bulldog-grid-fallback-ie.min.css: -------------------------------------------------------------------------------- 1 | *,::after,::before{box-sizing:border-box}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){.grid{display:flex;flex-wrap:wrap;flex-direction:row;margin-right:-.125rem;margin-left:-.125rem}.grid>*{flex:0 0 8.33333%;max-width:8.33333%;min-height:1px;padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-0{margin-right:0;margin-left:0}.grid.has-grid-gap-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:20em),only screen and (-ms-high-contrast:none) and (min-width:20em){.grid.has-grid-gap-xs-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xs-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xs-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xs-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xs-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xs-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xs-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xs-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xs-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xs-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xs-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xs-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xs-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xs-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xs-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xs-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xs-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xs-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xs-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xs-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xs-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xs-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xs-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xs-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xs-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xs-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xs-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xs-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xs-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xs-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xs-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xs-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:37.5em),only screen and (-ms-high-contrast:none) and (min-width:37.5em){.grid.has-grid-gap-sm-0{margin-right:0;margin-left:0}.grid.has-grid-gap-sm-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-sm-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-sm-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-sm-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-sm-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-sm-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-sm-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-sm-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-sm-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-sm-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-sm-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-sm-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-sm-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-sm-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-sm-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-sm-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-sm-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-sm-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-sm-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-sm-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-sm-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-sm-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-sm-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-sm-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-sm-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-sm-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-sm-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-sm-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-sm-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:56.25em),only screen and (-ms-high-contrast:none) and (min-width:56.25em){.grid.has-grid-gap-md-0{margin-right:0;margin-left:0}.grid.has-grid-gap-md-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-md-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-md-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-md-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-md-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-md-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-md-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-md-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-md-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-md-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-md-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-md-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-md-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-md-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-md-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-md-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-md-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-md-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-md-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-md-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-md-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-md-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-md-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-md-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-md-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-md-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-md-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-md-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-md-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:75em),only screen and (-ms-high-contrast:none) and (min-width:75em){.grid.has-grid-gap-lg-0{margin-right:0;margin-left:0}.grid.has-grid-gap-lg-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-lg-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-lg-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-lg-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-lg-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-lg-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-lg-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-lg-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-lg-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-lg-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-lg-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-lg-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-lg-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-lg-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-lg-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-lg-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-lg-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-lg-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-lg-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-lg-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-lg-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-lg-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-lg-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-lg-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-lg-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-lg-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-lg-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-lg-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-lg-12>*{flex:0 0 8.33333%;max-width:8.33333%}}@media only screen and (-ms-high-contrast:active) and (min-width:112.5em),only screen and (-ms-high-contrast:none) and (min-width:112.5em){.grid.has-grid-gap-xl-0{margin-right:0;margin-left:0}.grid.has-grid-gap-xl-0>*{padding-right:0;padding-left:0;margin-bottom:0}.grid.has-grid-gap-xl-1{margin-right:-.125rem;margin-left:-.125rem}.grid.has-grid-gap-xl-1>*{padding-right:.125rem;padding-left:.125rem;margin-bottom:.25rem}.grid.has-grid-gap-xl-2{margin-right:-.25rem;margin-left:-.25rem}.grid.has-grid-gap-xl-2>*{padding-right:.25rem;padding-left:.25rem;margin-bottom:.5rem}.grid.has-grid-gap-xl-3{margin-right:-.5rem;margin-left:-.5rem}.grid.has-grid-gap-xl-3>*{padding-right:.5rem;padding-left:.5rem;margin-bottom:1rem}.grid.has-grid-gap-xl-4{margin-right:-.625rem;margin-left:-.625rem}.grid.has-grid-gap-xl-4>*{padding-right:.625rem;padding-left:.625rem;margin-bottom:1.25rem}.grid.has-grid-gap-xl-5{margin-right:-.75rem;margin-left:-.75rem}.grid.has-grid-gap-xl-5>*{padding-right:.75rem;padding-left:.75rem;margin-bottom:1.5rem}.grid.has-grid-gap-xl-6{margin-right:-1.5rem;margin-left:-1.5rem}.grid.has-grid-gap-xl-6>*{padding-right:1.5rem;padding-left:1.5rem;margin-bottom:3rem}.grid.has-grid-gap-xl-7{margin-right:-3rem;margin-left:-3rem}.grid.has-grid-gap-xl-7>*{padding-right:3rem;padding-left:3rem;margin-bottom:6rem}.grid.has-grid-gap-xl-8{margin-right:-4.5rem;margin-left:-4.5rem}.grid.has-grid-gap-xl-8>*{padding-right:4.5rem;padding-left:4.5rem;margin-bottom:9rem}.grid.has-grid-gap-xl-9{margin-right:-6rem;margin-left:-6rem}.grid.has-grid-gap-xl-9>*{padding-right:6rem;padding-left:6rem;margin-bottom:12rem}.grid.has-cols-xl-1>*{flex:0 0 100%;max-width:100%}.grid.has-cols-xl-2>*{flex:0 0 50%;max-width:50%}.grid.has-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.grid.has-cols-xl-4>*{flex:0 0 25%;max-width:25%}.grid.has-cols-xl-5>*{flex:0 0 20%;max-width:20%}.grid.has-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.grid.has-cols-xl-7>*{flex:0 0 14.28571%;max-width:14.28571%}.grid.has-cols-xl-8>*{flex:0 0 12.5%;max-width:12.5%}.grid.has-cols-xl-9>*{flex:0 0 11.11111%;max-width:11.11111%}.grid.has-cols-xl-10>*{flex:0 0 10%;max-width:10%}.grid.has-cols-xl-11>*{flex:0 0 9.09091%;max-width:9.09091%}.grid.has-cols-xl-12>*{flex:0 0 8.33333%;max-width:8.33333%}} -------------------------------------------------------------------------------- /static/css/atomic-bulldog-grid.min.css: -------------------------------------------------------------------------------- 1 | .is-theme-default,.theme-default,:root{--bp-xs:320px;--bp-sm:600px;--bp-md:900px;--bp-lg:1200px;--bp-xl:1800px}.is-theme-default,.theme-default,:root{--container-size-sm:570px;--container-size-md:860px;--container-size-lg:1150px;--container-size-xl:1400px}.is-theme-default,.theme-default,:root{--spacer-0:0;--spacer-1:0.25rem;--spacer-2:0.5rem;--spacer-3:1rem;--spacer-4:1.25rem;--spacer-5:1.5rem;--spacer-6:3rem;--spacer-7:6rem;--spacer-8:9rem;--spacer-9:12rem}.container{padding-right:1rem;padding-left:1rem}.container:not(.is-fluid){margin:0 auto}@media only screen and (min-width:37.5em){.container:not(.is-fluid){width:var(--container-size-sm)}}@media only screen and (min-width:56.25em){.container:not(.is-fluid){width:var(--container-size-md)}}@media only screen and (min-width:75em){.container:not(.is-fluid){width:var(--container-size-lg)}}@media only screen and (min-width:112.5em){.container:not(.is-fluid){width:var(--container-size-xl)}}@supports (display:grid){.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-gap:var(--spacer-1)}.grid.is-dense{grid-auto-flow:dense}.grid .has-col-all{grid-column:1/-1}.grid .has-row-all{grid-row:1/-1}.grid .has-col-1{grid-column:span 1}.grid.has-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-2{grid-column:span 2}.grid.has-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-3{grid-column:span 3}.grid.has-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-4{grid-column:span 4}.grid.has-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-5{grid-column:span 5}.grid.has-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-6{grid-column:span 6}.grid.has-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-7{grid-column:span 7}.grid.has-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-8{grid-column:span 8}.grid.has-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-9{grid-column:span 9}.grid.has-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-10{grid-column:span 10}.grid.has-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-11{grid-column:span 11}.grid.has-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-12{grid-column:span 12}.grid.has-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-1{grid-row:span 1}.grid .has-row-2{grid-row:span 2}.grid .has-row-3{grid-row:span 3}.grid .has-row-4{grid-row:span 4}.grid .has-row-5{grid-row:span 5}.grid .has-row-6{grid-row:span 6}.grid .has-row-7{grid-row:span 7}.grid .has-row-8{grid-row:span 8}.grid .has-row-9{grid-row:span 9}.grid .has-row-10{grid-row:span 10}.grid.has-grid-gap-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-9{grid-gap:var(--spacer-9)}@media only screen and (min-width:20em){.grid .has-col-xs-all{grid-column:1/-1}.grid .has-row-xs-all{grid-row:1/-1}.grid .has-col-xs-1{grid-column:span 1}.grid.has-cols-xs-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-xs-2{grid-column:span 2}.grid.has-cols-xs-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-xs-3{grid-column:span 3}.grid.has-cols-xs-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-xs-4{grid-column:span 4}.grid.has-cols-xs-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-xs-5{grid-column:span 5}.grid.has-cols-xs-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-xs-6{grid-column:span 6}.grid.has-cols-xs-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-xs-7{grid-column:span 7}.grid.has-cols-xs-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-xs-8{grid-column:span 8}.grid.has-cols-xs-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-xs-9{grid-column:span 9}.grid.has-cols-xs-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-xs-10{grid-column:span 10}.grid.has-cols-xs-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-xs-11{grid-column:span 11}.grid.has-cols-xs-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-xs-12{grid-column:span 12}.grid.has-cols-xs-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-xs-1{grid-row:span 1}.grid .has-row-xs-2{grid-row:span 2}.grid .has-row-xs-3{grid-row:span 3}.grid .has-row-xs-4{grid-row:span 4}.grid .has-row-xs-5{grid-row:span 5}.grid .has-row-xs-6{grid-row:span 6}.grid .has-row-xs-7{grid-row:span 7}.grid .has-row-xs-8{grid-row:span 8}.grid .has-row-xs-9{grid-row:span 9}.grid .has-row-xs-10{grid-row:span 10}.grid .has-row-xs-11{grid-row:span 11}.grid .has-row-xs-12{grid-row:span 12}.grid.has-grid-gap-xs-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-xs-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-xs-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-xs-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-xs-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-xs-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-xs-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-xs-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-xs-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-xs-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:37.5em){.grid .has-col-sm-all{grid-column:1/-1}.grid .has-row-sm-all{grid-row:1/-1}.grid .has-col-sm-1{grid-column:span 1}.grid.has-cols-sm-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-sm-2{grid-column:span 2}.grid.has-cols-sm-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-sm-3{grid-column:span 3}.grid.has-cols-sm-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-sm-4{grid-column:span 4}.grid.has-cols-sm-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-sm-5{grid-column:span 5}.grid.has-cols-sm-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-sm-6{grid-column:span 6}.grid.has-cols-sm-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-sm-7{grid-column:span 7}.grid.has-cols-sm-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-sm-8{grid-column:span 8}.grid.has-cols-sm-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-sm-9{grid-column:span 9}.grid.has-cols-sm-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-sm-10{grid-column:span 10}.grid.has-cols-sm-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-sm-11{grid-column:span 11}.grid.has-cols-sm-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-sm-12{grid-column:span 12}.grid.has-cols-sm-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-sm-1{grid-row:span 1}.grid .has-row-sm-2{grid-row:span 2}.grid .has-row-sm-3{grid-row:span 3}.grid .has-row-sm-4{grid-row:span 4}.grid .has-row-sm-5{grid-row:span 5}.grid .has-row-sm-6{grid-row:span 6}.grid .has-row-sm-7{grid-row:span 7}.grid .has-row-sm-8{grid-row:span 8}.grid .has-row-sm-9{grid-row:span 9}.grid .has-row-sm-10{grid-row:span 10}.grid .has-row-sm-11{grid-row:span 11}.grid .has-row-sm-12{grid-row:span 12}.grid.has-grid-gap-sm-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-sm-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-sm-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-sm-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-sm-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-sm-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-sm-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-sm-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-sm-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-sm-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:56.25em){.grid .has-col-md-all{grid-column:1/-1}.grid .has-row-md-all{grid-row:1/-1}.grid .has-col-md-1{grid-column:span 1}.grid.has-cols-md-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-md-2{grid-column:span 2}.grid.has-cols-md-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-md-3{grid-column:span 3}.grid.has-cols-md-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-md-4{grid-column:span 4}.grid.has-cols-md-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-md-5{grid-column:span 5}.grid.has-cols-md-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-md-6{grid-column:span 6}.grid.has-cols-md-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-md-7{grid-column:span 7}.grid.has-cols-md-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-md-8{grid-column:span 8}.grid.has-cols-md-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-md-9{grid-column:span 9}.grid.has-cols-md-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-md-10{grid-column:span 10}.grid.has-cols-md-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-md-11{grid-column:span 11}.grid.has-cols-md-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-md-12{grid-column:span 12}.grid.has-cols-md-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-md-1{grid-row:span 1}.grid .has-row-md-2{grid-row:span 2}.grid .has-row-md-3{grid-row:span 3}.grid .has-row-md-4{grid-row:span 4}.grid .has-row-md-5{grid-row:span 5}.grid .has-row-md-6{grid-row:span 6}.grid .has-row-md-7{grid-row:span 7}.grid .has-row-md-8{grid-row:span 8}.grid .has-row-md-9{grid-row:span 9}.grid .has-row-md-10{grid-row:span 10}.grid .has-row-md-11{grid-row:span 11}.grid .has-row-md-12{grid-row:span 12}.grid.has-grid-gap-md-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-md-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-md-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-md-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-md-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-md-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-md-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-md-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-md-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-md-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:75em){.grid .has-col-lg-all{grid-column:1/-1}.grid .has-row-lg-all{grid-row:1/-1}.grid .has-col-lg-1{grid-column:span 1}.grid.has-cols-lg-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-lg-2{grid-column:span 2}.grid.has-cols-lg-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-lg-3{grid-column:span 3}.grid.has-cols-lg-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-lg-4{grid-column:span 4}.grid.has-cols-lg-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-lg-5{grid-column:span 5}.grid.has-cols-lg-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-lg-6{grid-column:span 6}.grid.has-cols-lg-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-lg-7{grid-column:span 7}.grid.has-cols-lg-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-lg-8{grid-column:span 8}.grid.has-cols-lg-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-lg-9{grid-column:span 9}.grid.has-cols-lg-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-lg-10{grid-column:span 10}.grid.has-cols-lg-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-lg-11{grid-column:span 11}.grid.has-cols-lg-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-lg-12{grid-column:span 12}.grid.has-cols-lg-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-lg-1{grid-row:span 1}.grid .has-row-lg-2{grid-row:span 2}.grid .has-row-lg-3{grid-row:span 3}.grid .has-row-lg-4{grid-row:span 4}.grid .has-row-lg-5{grid-row:span 5}.grid .has-row-lg-6{grid-row:span 6}.grid .has-row-lg-7{grid-row:span 7}.grid .has-row-lg-8{grid-row:span 8}.grid .has-row-lg-9{grid-row:span 9}.grid .has-row-lg-10{grid-row:span 10}.grid .has-row-lg-11{grid-row:span 11}.grid .has-row-lg-12{grid-row:span 12}.grid.has-grid-gap-lg-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-lg-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-lg-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-lg-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-lg-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-lg-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-lg-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-lg-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-lg-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-lg-9{grid-gap:var(--spacer-9)}}@media only screen and (min-width:112.5em){.grid .has-col-xl-all{grid-column:1/-1}.grid .has-row-xl-all{grid-row:1/-1}.grid .has-col-xl-1{grid-column:span 1}.grid.has-cols-xl-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid .has-col-xl-2{grid-column:span 2}.grid.has-cols-xl-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid .has-col-xl-3{grid-column:span 3}.grid.has-cols-xl-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid .has-col-xl-4{grid-column:span 4}.grid.has-cols-xl-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid .has-col-xl-5{grid-column:span 5}.grid.has-cols-xl-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid .has-col-xl-6{grid-column:span 6}.grid.has-cols-xl-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid .has-col-xl-7{grid-column:span 7}.grid.has-cols-xl-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid .has-col-xl-8{grid-column:span 8}.grid.has-cols-xl-8{grid-template-columns:repeat(8,minmax(0,1fr))}.grid .has-col-xl-9{grid-column:span 9}.grid.has-cols-xl-9{grid-template-columns:repeat(9,minmax(0,1fr))}.grid .has-col-xl-10{grid-column:span 10}.grid.has-cols-xl-10{grid-template-columns:repeat(10,minmax(0,1fr))}.grid .has-col-xl-11{grid-column:span 11}.grid.has-cols-xl-11{grid-template-columns:repeat(11,minmax(0,1fr))}.grid .has-col-xl-12{grid-column:span 12}.grid.has-cols-xl-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid .has-row-xl-1{grid-row:span 1}.grid .has-row-xl-2{grid-row:span 2}.grid .has-row-xl-3{grid-row:span 3}.grid .has-row-xl-4{grid-row:span 4}.grid .has-row-xl-5{grid-row:span 5}.grid .has-row-xl-6{grid-row:span 6}.grid .has-row-xl-7{grid-row:span 7}.grid .has-row-xl-8{grid-row:span 8}.grid .has-row-xl-9{grid-row:span 9}.grid .has-row-xl-10{grid-row:span 10}.grid .has-row-xl-11{grid-row:span 11}.grid .has-row-xl-12{grid-row:span 12}.grid.has-grid-gap-xl-0{grid-gap:var(--spacer-0)}.grid.has-grid-gap-xl-1{grid-gap:var(--spacer-1)}.grid.has-grid-gap-xl-2{grid-gap:var(--spacer-2)}.grid.has-grid-gap-xl-3{grid-gap:var(--spacer-3)}.grid.has-grid-gap-xl-4{grid-gap:var(--spacer-4)}.grid.has-grid-gap-xl-5{grid-gap:var(--spacer-5)}.grid.has-grid-gap-xl-6{grid-gap:var(--spacer-6)}.grid.has-grid-gap-xl-7{grid-gap:var(--spacer-7)}.grid.has-grid-gap-xl-8{grid-gap:var(--spacer-8)}.grid.has-grid-gap-xl-9{grid-gap:var(--spacer-9)}}} -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Atomic Bulldog Grid 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |
20 |

Atomic Bulldog Grid

21 |

CSS (SCSS) grid, base on CSS grid layout with @supports fallback to flexbox (partial support)

22 | Get this project in Github 23 | 24 |
25 |
26 |
27 |

1

28 |
29 |
30 |
31 |
32 |

2

33 |
34 |
35 |
36 |
37 |

3

38 |
39 |
40 |
41 |

1

42 |
43 |
44 |
45 |
46 |

2

47 |
48 |
49 |
50 |
51 |

3

52 |
53 |
54 |
55 |
56 |

4

57 |
58 |
59 |
60 |
61 |

5

62 |
63 |
64 |
65 |
66 |

6

67 |
68 |
69 |
70 |
71 |

7

72 |
73 |
74 |
75 |
76 |

8

77 |
78 |
79 |
80 |
81 |

9

82 |
83 |
84 |
85 |
86 |

10

87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |

4

95 |
96 |
97 |
98 |
99 | 100 | 113 | 114 |
115 |

116 | .grid class

117 |

By default 118 | .grid will have the maximum of columns set in 119 | scss/variables/_grid.scss => $grid-columns. By default the grid have 12 columns

120 |
121 |
122 |
123 |

1

124 |
125 |
126 |
127 |
128 |

2

129 |
130 |
131 |
132 |
133 |

3

134 |
135 |
136 |
137 |
138 |

4

139 |
140 |
141 |
142 |
143 |

5

144 |
145 |
146 |
147 |
148 |

6

149 |
150 |
151 |
152 |
153 |

7

154 |
155 |
156 |
157 |
158 |

8

159 |
160 |
161 |
162 |
163 |

9

164 |
165 |
166 |
167 |
168 |

10

169 |
170 |
171 |
172 |
173 |

11

174 |
175 |
176 |
177 |
178 |

12

179 |
180 |
181 |
182 |
183 |

13

184 |
185 |
186 |
187 |
188 |

14

189 |
190 |
191 |
192 |
212 |
213 | 214 | 215 | 216 | 217 |
218 |

219 | .has-cols-{breakpoint}-{number of columns} class

220 |

The number of columns of the grid can be changed using the class 221 | .has-cols-{breakpoint}-{number of columns} 222 |

223 |
    224 |
  • 225 | {breakpoint}: optional breakpoint (See breakpoints) to change the number of columns 226 | from a breakpoint
  • 227 |
  • 228 | {number of columns}: From 0 to 12($grid-columns)
  • 229 |
230 |
231 |
232 |
233 |

1

234 |
235 |
236 |
237 |
238 |

2

239 |
240 |
241 |
242 |
243 |

3

244 |
245 |
246 |
247 |
248 |

4

249 |
250 |
251 |
252 |
253 |

5

254 |
255 |
256 |
257 |
258 |

6

259 |
260 |
261 |
262 |
263 |

7

264 |
265 |
266 |
267 |
268 |

8

269 |
270 |
271 |
272 |
273 |

9

274 |
275 |
276 |
277 |
278 |

10

279 |
280 |
281 |
282 |
283 |

11

284 |
285 |
286 |
287 |
288 |

12

289 |
290 |
291 |
292 |
293 |

13

294 |
295 |
296 |
297 |
298 |

14

299 |
300 |
301 |
302 |
322 |

323 | .has-cols-1 324 |

325 |
326 |
327 |
328 |

1

329 |
330 |
331 |
332 | 333 |

334 | .has-cols-2 335 |

336 |
337 | 338 |
339 |

1

340 |
341 |
342 | 343 |
344 |

2

345 |
346 |
347 |
348 | 349 |

350 | .has-cols-3 351 |

352 |
353 | 354 |
355 |

1

356 |
357 |
358 | 359 |
360 |

2

361 |
362 |
363 | 364 |
365 |

3

366 |
367 |
368 |
369 | 370 |

371 | .has-cols-4 372 |

373 |
374 | 375 |
376 |

1

377 |
378 |
379 | 380 |
381 |

2

382 |
383 |
384 | 385 |
386 |

3

387 |
388 |
389 | 390 |
391 |

4

392 |
393 |
394 |
395 | 396 |

397 | .has-cols-5 398 |

399 |
400 | 401 |
402 |

1

403 |
404 |
405 | 406 |
407 |

2

408 |
409 |
410 | 411 |
412 |

3

413 |
414 |
415 | 416 |
417 |

4

418 |
419 |
420 | 421 |
422 |

5

423 |
424 |
425 |
426 | 427 |

428 | .has-cols-6 429 |

430 |
431 | 432 |
433 |

1

434 |
435 |
436 | 437 |
438 |

2

439 |
440 |
441 | 442 |
443 |

3

444 |
445 |
446 | 447 |
448 |

4

449 |
450 |
451 | 452 |
453 |

5

454 |
455 |
456 | 457 |
458 |

6

459 |
460 |
461 |
462 | 463 |

464 | .has-cols-7 465 |

466 |
467 | 468 |
469 |

1

470 |
471 |
472 | 473 |
474 |

2

475 |
476 |
477 | 478 |
479 |

3

480 |
481 |
482 | 483 |
484 |

4

485 |
486 |
487 | 488 |
489 |

5

490 |
491 |
492 | 493 |
494 |

6

495 |
496 |
497 | 498 |
499 |

7

500 |
501 |
502 |
503 | 504 |

etc. up to $grid-columns (12)

505 |
506 | 507 | 508 |
509 |

510 | .has-grid-gap-{breakpoint}-{spacer} class

511 |

The spacing between grid items can be changed using the class 512 | .has-cols-{breakpoint}-{number of columns} 513 |

514 |
    515 |
  • 516 | {breakpoint}: optional breakpoint (See breakpoints) to change spacing from a breakpoint
  • 517 |
  • 518 | {spacer}: From 0 to 9 they can be change in 519 | scss/variables/_spacers.scss => $spacers 520 |
  • 521 |
522 |
523 | 524 |
525 |

1

526 |
527 |
528 | 529 |
530 |

2

531 |
532 |
533 | 534 |
535 |

3

536 |
537 |
538 | 539 |
540 |

4

541 |
542 |
543 | 544 |
545 |

5

546 |
547 |
548 |
549 |
569 | 570 |
571 |
572 |

573 | .has-grid-gap-0 574 |

575 |
576 | 577 |
578 |

1

579 |
580 |
581 | 582 |
583 |

2

584 |
585 |
586 | 587 |
588 |

3

589 |
590 |
591 | 592 |
593 |

4

594 |
595 |
596 | 597 |
598 |

5

599 |
600 |
601 | 602 |
603 |

6

604 |
605 |
606 |
607 |
608 |
609 |

610 | .has-grid-gap-1 611 |

612 |
613 | 614 |
615 |

1

616 |
617 |
618 | 619 |
620 |

2

621 |
622 |
623 | 624 |
625 |

3

626 |
627 |
628 | 629 |
630 |

4

631 |
632 |
633 | 634 |
635 |

5

636 |
637 |
638 | 639 |
640 |

6

641 |
642 |
643 |
644 |
645 | 646 |
647 |

648 | .has-grid-gap-2 649 |

650 |
651 | 652 |
653 |

1

654 |
655 |
656 | 657 |
658 |

2

659 |
660 |
661 | 662 |
663 |

3

664 |
665 |
666 | 667 |
668 |

4

669 |
670 |
671 | 672 |
673 |

5

674 |
675 |
676 | 677 |
678 |

6

679 |
680 |
681 |
682 |
683 | 684 |
685 |

686 | .has-grid-gap-3 687 |

688 |
689 | 690 |
691 |

1

692 |
693 |
694 | 695 |
696 |

2

697 |
698 |
699 | 700 |
701 |

3

702 |
703 |
704 | 705 |
706 |

4

707 |
708 |
709 | 710 |
711 |

5

712 |
713 |
714 | 715 |
716 |

6

717 |
718 |
719 |
720 |
721 | 722 |
723 |

724 | .has-grid-gap-4 725 |

726 |
727 | 728 |
729 |

1

730 |
731 |
732 | 733 |
734 |

2

735 |
736 |
737 | 738 |
739 |

3

740 |
741 |
742 | 743 |
744 |

4

745 |
746 |
747 | 748 |
749 |

5

750 |
751 |
752 | 753 |
754 |

6

755 |
756 |
757 |
758 |
759 | 760 |
761 |

762 | .has-grid-gap-5 763 |

764 |
765 | 766 |
767 |

1

768 |
769 |
770 | 771 |
772 |

2

773 |
774 |
775 | 776 |
777 |

3

778 |
779 |
780 | 781 |
782 |

4

783 |
784 |
785 | 786 |
787 |

5

788 |
789 |
790 | 791 |
792 |

6

793 |
794 |
795 |
796 |
797 | 798 |
799 |

800 | .has-grid-gap-6 801 |

802 |
803 | 804 |
805 |

1

806 |
807 |
808 | 809 |
810 |

2

811 |
812 |
813 | 814 |
815 |

3

816 |
817 |
818 | 819 |
820 |

4

821 |
822 |
823 | 824 |
825 |

5

826 |
827 |
828 | 829 |
830 |

6

831 |
832 |
833 |
834 |
835 | 836 |
837 |

838 | .has-grid-gap-7 839 |

840 |
841 | 842 |
843 |

1

844 |
845 |
846 | 847 |
848 |

2

849 |
850 |
851 | 852 |
853 |

3

854 |
855 |
856 | 857 |
858 |

4

859 |
860 |
861 | 862 |
863 |

5

864 |
865 |
866 | 867 |
868 |

6

869 |
870 |
871 |
872 |
873 | 874 |
875 |

876 | .has-grid-gap-8 877 |

878 |
879 | 880 |
881 |

1

882 |
883 |
884 | 885 |
886 |

2

887 |
888 |
889 | 890 |
891 |

3

892 |
893 |
894 | 895 |
896 |

4

897 |
898 |
899 | 900 |
901 |

5

902 |
903 |
904 | 905 |
906 |

6

907 |
908 |
909 |
910 |
911 | 912 |
913 |

914 | .has-grid-gap-9 915 |

916 |
917 | 918 |
919 |

1

920 |
921 |
922 | 923 |
924 |

2

925 |
926 |
927 | 928 |
929 |

3

930 |
931 |
932 | 933 |
934 |

4

935 |
936 |
937 | 938 |
939 |

5

940 |
941 |
942 | 943 |
944 |

6

945 |
946 |
947 |
948 |
949 |
950 |
951 | 952 |
953 |

954 | .has-col-{breakpoint}-{number of columns} class 955 | /!\ No fallback 956 |

957 |

The number of columns of a grid item can be changed using the class 958 | .has-col-{breakpoint}-{number of columns} 959 |

960 |
    961 |
  • 962 | {breakpoint}: optional breakpoint (See breakpoints) to change the number of columns 963 | of the item from a breakpoint
  • 964 |
  • 965 | {number of columns}: From 0 to 12($grid-columns) the word all can be used, the item 966 | will be full width in this case
  • 967 |
968 | 969 |
970 | 971 |
972 |

1

973 |
974 |
975 | 976 |
977 |

2

978 |
979 |
980 | 981 |
982 |

3

983 |
984 |
985 | 986 |
987 |

4

988 |
989 |
990 | 991 |
992 |

5

993 |
994 |
995 | 996 |
997 |

6

998 |
999 |
1000 | 1001 |
1002 |

7

1003 |
1004 |
1005 | 1006 |
1007 |

8

1008 |
1009 |
1010 | 1011 |
1012 |

9

1013 |
1014 |
1015 | 1016 |
1017 |

10

1018 |
1019 |
1020 |
1021 | 1022 |
1076 |
1077 | 1078 |
1079 |

1080 | .has-row-{breakpoint}-{number of rows} class 1081 | /!\ No fallback 1082 |

1083 |

The number of row of a grid item can be changed using the class 1084 | .has-row-{breakpoint}-{number of columns}. 1085 |

1086 |
    1087 |
  • 1088 | {breakpoint}: optional breakpoint (See breakpoints) to change the number of rows. of 1089 | the item from a breakpoint
  • 1090 |
  • 1091 | {number of row}: Depend on your layout and the number of rows you end up with, But you 1092 | can set a number of rows using 1093 | grid-template-rows. The word all can be used the item will be full width in this case 1094 | only if the number of rows is set.
  • 1095 |
1096 |
1097 | 1098 |
1099 |

1

1100 |
1101 |
1102 | 1103 |
1104 |

2

1105 |
1106 |
1107 | 1108 |
1109 |

3

1110 |
1111 |
1112 | 1113 |
1114 |

4

1115 |
1116 |
1117 | 1118 |
1119 |

5

1120 |
1121 |
1122 | 1123 |
1124 |

6

1125 |
1126 |
1127 | 1128 |
1129 |

7

1130 |
1131 |
1132 | 1133 |
1134 |

8

1135 |
1136 |
1137 | 1138 |
1139 |

9

1140 |
1141 |
1142 | 1143 |
1144 |

10

1145 |
1146 |
1147 |
1148 |
1202 |
1203 | 1204 |
1205 |

1206 | .is-dense class 1207 | /!\ No fallback 1208 |

1209 |

1210 | .is-dense with 1211 | .grid will make the grid dense.

1212 | 1213 |
Dense: Is a keyword specifying that the auto-placement algorithm uses a “dense” packing algorithm, which attempts 1214 | to fill in holes earlier in the grid, if smaller items come up later. This may cause items to appear 1215 | out-of-order, when doing so would fill in holes left by larger items.
1216 | https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow 1217 | 1218 |

For example, here is the example from .has-col-{breakpoint}-{number of columns} if .is-dense:

1219 | 1220 |
1221 | 1222 |
1223 |

1

1224 |
1225 |
1226 | 1227 |
1228 |

2

1229 |
1230 |
1231 | 1232 |
1233 |

3

1234 |
1235 |
1236 | 1237 |
1238 |

4

1239 |
1240 |
1241 | 1242 |
1243 |

5

1244 |
1245 |
1246 | 1247 |
1248 |

6

1249 |
1250 |
1251 | 1252 |
1253 |

7

1254 |
1255 |
1256 | 1257 |
1258 |

8

1259 |
1260 |
1261 | 1262 |
1263 |

9

1264 |
1265 |
1266 | 1267 |
1268 |

10

1269 |
1270 |
1271 |
1272 | 1273 |
1327 |
1328 | 1329 |
1330 |

.container Class

1331 |

Atomic Bulldog grid comes with a container class to get even spacing in your project. This all page is in a container.

1332 |
1333 | 1334 |
1335 |

Configure your grid with SCSS

1336 |

Atomic Bulldog Grid is fully customizable:

1337 |
    1338 |
  • CSS variables: By default, the grid comes with CSS custom properties, and the fallback CSS not.
    1339 | $use-css-var can be changed to suit you need in atomic-bulldog-grid.scss, atomic-bulldog-grid-fallback.scss, atomic-bulldog-grid-fallback-ie.scss.
  • 1340 |
  • Breakpoints: The map $breakpoints manage all the breakpoints in the project you can add, remove, rename so this grid can fit your needs.
  • 1341 |
  • Number of Columns: Change $grid-columns to the maximum of columns you need.
  • 1342 |
  • Spacers: The map $spacers manage all the spacing in the project you can add, remove, rename so this grid can fit your needs.
  • 1343 |
  • Container sizes: The map $container-sizes manage all the container sizes, it is linked to the $breakpoints map if you edit this one remember to change the container map as well.
  • 1344 |
1345 |
1346 | 1347 | 1348 |
1349 | 1350 |
1351 | 1352 | 1353 | -------------------------------------------------------------------------------- /static/css/atomic-bulldog-grid-fallback-ie.css: -------------------------------------------------------------------------------- 1 | /*Min and Max mixins*/ 2 | /* Progressive Enhancement for browsers not supporting grid except IE */ 3 | *, *::before, *::after { 4 | box-sizing: border-box; 5 | } 6 | 7 | /* IE10 and 11 Fallback to be remove when < 1%*/ 8 | @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) { 9 | .grid { 10 | display: flex; 11 | flex-wrap: wrap; 12 | flex-direction: row; 13 | margin-right: -0.125rem; 14 | margin-left: -0.125rem; 15 | } 16 | .grid > * { 17 | flex: 0 0 8.33333%; 18 | max-width: 8.33333%; 19 | min-height: 1px; 20 | padding-right: 0.125rem; 21 | padding-left: 0.125rem; 22 | margin-bottom: 0.25rem; 23 | } 24 | .grid.has-grid-gap-0 { 25 | margin-right: 0; 26 | margin-left: 0; 27 | } 28 | .grid.has-grid-gap-0 > * { 29 | padding-right: 0; 30 | padding-left: 0; 31 | margin-bottom: 0; 32 | } 33 | .grid.has-grid-gap-1 { 34 | margin-right: -0.125rem; 35 | margin-left: -0.125rem; 36 | } 37 | .grid.has-grid-gap-1 > * { 38 | padding-right: 0.125rem; 39 | padding-left: 0.125rem; 40 | margin-bottom: 0.25rem; 41 | } 42 | .grid.has-grid-gap-2 { 43 | margin-right: -0.25rem; 44 | margin-left: -0.25rem; 45 | } 46 | .grid.has-grid-gap-2 > * { 47 | padding-right: 0.25rem; 48 | padding-left: 0.25rem; 49 | margin-bottom: 0.5rem; 50 | } 51 | .grid.has-grid-gap-3 { 52 | margin-right: -0.5rem; 53 | margin-left: -0.5rem; 54 | } 55 | .grid.has-grid-gap-3 > * { 56 | padding-right: 0.5rem; 57 | padding-left: 0.5rem; 58 | margin-bottom: 1rem; 59 | } 60 | .grid.has-grid-gap-4 { 61 | margin-right: -0.625rem; 62 | margin-left: -0.625rem; 63 | } 64 | .grid.has-grid-gap-4 > * { 65 | padding-right: 0.625rem; 66 | padding-left: 0.625rem; 67 | margin-bottom: 1.25rem; 68 | } 69 | .grid.has-grid-gap-5 { 70 | margin-right: -0.75rem; 71 | margin-left: -0.75rem; 72 | } 73 | .grid.has-grid-gap-5 > * { 74 | padding-right: 0.75rem; 75 | padding-left: 0.75rem; 76 | margin-bottom: 1.5rem; 77 | } 78 | .grid.has-grid-gap-6 { 79 | margin-right: -1.5rem; 80 | margin-left: -1.5rem; 81 | } 82 | .grid.has-grid-gap-6 > * { 83 | padding-right: 1.5rem; 84 | padding-left: 1.5rem; 85 | margin-bottom: 3rem; 86 | } 87 | .grid.has-grid-gap-7 { 88 | margin-right: -3rem; 89 | margin-left: -3rem; 90 | } 91 | .grid.has-grid-gap-7 > * { 92 | padding-right: 3rem; 93 | padding-left: 3rem; 94 | margin-bottom: 6rem; 95 | } 96 | .grid.has-grid-gap-8 { 97 | margin-right: -4.5rem; 98 | margin-left: -4.5rem; 99 | } 100 | .grid.has-grid-gap-8 > * { 101 | padding-right: 4.5rem; 102 | padding-left: 4.5rem; 103 | margin-bottom: 9rem; 104 | } 105 | .grid.has-grid-gap-9 { 106 | margin-right: -6rem; 107 | margin-left: -6rem; 108 | } 109 | .grid.has-grid-gap-9 > * { 110 | padding-right: 6rem; 111 | padding-left: 6rem; 112 | margin-bottom: 12rem; 113 | } 114 | .grid.has-cols-1 > * { 115 | flex: 0 0 100%; 116 | max-width: 100%; 117 | } 118 | .grid.has-cols-2 > * { 119 | flex: 0 0 50%; 120 | max-width: 50%; 121 | } 122 | .grid.has-cols-3 > * { 123 | flex: 0 0 33.33333%; 124 | max-width: 33.33333%; 125 | } 126 | .grid.has-cols-4 > * { 127 | flex: 0 0 25%; 128 | max-width: 25%; 129 | } 130 | .grid.has-cols-5 > * { 131 | flex: 0 0 20%; 132 | max-width: 20%; 133 | } 134 | .grid.has-cols-6 > * { 135 | flex: 0 0 16.66667%; 136 | max-width: 16.66667%; 137 | } 138 | .grid.has-cols-7 > * { 139 | flex: 0 0 14.28571%; 140 | max-width: 14.28571%; 141 | } 142 | .grid.has-cols-8 > * { 143 | flex: 0 0 12.5%; 144 | max-width: 12.5%; 145 | } 146 | .grid.has-cols-9 > * { 147 | flex: 0 0 11.11111%; 148 | max-width: 11.11111%; 149 | } 150 | .grid.has-cols-10 > * { 151 | flex: 0 0 10%; 152 | max-width: 10%; 153 | } 154 | .grid.has-cols-11 > * { 155 | flex: 0 0 9.09091%; 156 | max-width: 9.09091%; 157 | } 158 | .grid.has-cols-12 > * { 159 | flex: 0 0 8.33333%; 160 | max-width: 8.33333%; 161 | } 162 | } 163 | 164 | @media only screen and (-ms-high-contrast: active) and (min-width: 20em), only screen and (-ms-high-contrast: none) and (min-width: 20em) { 165 | .grid.has-grid-gap-xs-0 { 166 | margin-right: 0; 167 | margin-left: 0; 168 | } 169 | .grid.has-grid-gap-xs-0 > * { 170 | padding-right: 0; 171 | padding-left: 0; 172 | margin-bottom: 0; 173 | } 174 | .grid.has-grid-gap-xs-1 { 175 | margin-right: -0.125rem; 176 | margin-left: -0.125rem; 177 | } 178 | .grid.has-grid-gap-xs-1 > * { 179 | padding-right: 0.125rem; 180 | padding-left: 0.125rem; 181 | margin-bottom: 0.25rem; 182 | } 183 | .grid.has-grid-gap-xs-2 { 184 | margin-right: -0.25rem; 185 | margin-left: -0.25rem; 186 | } 187 | .grid.has-grid-gap-xs-2 > * { 188 | padding-right: 0.25rem; 189 | padding-left: 0.25rem; 190 | margin-bottom: 0.5rem; 191 | } 192 | .grid.has-grid-gap-xs-3 { 193 | margin-right: -0.5rem; 194 | margin-left: -0.5rem; 195 | } 196 | .grid.has-grid-gap-xs-3 > * { 197 | padding-right: 0.5rem; 198 | padding-left: 0.5rem; 199 | margin-bottom: 1rem; 200 | } 201 | .grid.has-grid-gap-xs-4 { 202 | margin-right: -0.625rem; 203 | margin-left: -0.625rem; 204 | } 205 | .grid.has-grid-gap-xs-4 > * { 206 | padding-right: 0.625rem; 207 | padding-left: 0.625rem; 208 | margin-bottom: 1.25rem; 209 | } 210 | .grid.has-grid-gap-xs-5 { 211 | margin-right: -0.75rem; 212 | margin-left: -0.75rem; 213 | } 214 | .grid.has-grid-gap-xs-5 > * { 215 | padding-right: 0.75rem; 216 | padding-left: 0.75rem; 217 | margin-bottom: 1.5rem; 218 | } 219 | .grid.has-grid-gap-xs-6 { 220 | margin-right: -1.5rem; 221 | margin-left: -1.5rem; 222 | } 223 | .grid.has-grid-gap-xs-6 > * { 224 | padding-right: 1.5rem; 225 | padding-left: 1.5rem; 226 | margin-bottom: 3rem; 227 | } 228 | .grid.has-grid-gap-xs-7 { 229 | margin-right: -3rem; 230 | margin-left: -3rem; 231 | } 232 | .grid.has-grid-gap-xs-7 > * { 233 | padding-right: 3rem; 234 | padding-left: 3rem; 235 | margin-bottom: 6rem; 236 | } 237 | .grid.has-grid-gap-xs-8 { 238 | margin-right: -4.5rem; 239 | margin-left: -4.5rem; 240 | } 241 | .grid.has-grid-gap-xs-8 > * { 242 | padding-right: 4.5rem; 243 | padding-left: 4.5rem; 244 | margin-bottom: 9rem; 245 | } 246 | .grid.has-grid-gap-xs-9 { 247 | margin-right: -6rem; 248 | margin-left: -6rem; 249 | } 250 | .grid.has-grid-gap-xs-9 > * { 251 | padding-right: 6rem; 252 | padding-left: 6rem; 253 | margin-bottom: 12rem; 254 | } 255 | .grid.has-cols-xs-1 > * { 256 | flex: 0 0 100%; 257 | max-width: 100%; 258 | } 259 | .grid.has-cols-xs-2 > * { 260 | flex: 0 0 50%; 261 | max-width: 50%; 262 | } 263 | .grid.has-cols-xs-3 > * { 264 | flex: 0 0 33.33333%; 265 | max-width: 33.33333%; 266 | } 267 | .grid.has-cols-xs-4 > * { 268 | flex: 0 0 25%; 269 | max-width: 25%; 270 | } 271 | .grid.has-cols-xs-5 > * { 272 | flex: 0 0 20%; 273 | max-width: 20%; 274 | } 275 | .grid.has-cols-xs-6 > * { 276 | flex: 0 0 16.66667%; 277 | max-width: 16.66667%; 278 | } 279 | .grid.has-cols-xs-7 > * { 280 | flex: 0 0 14.28571%; 281 | max-width: 14.28571%; 282 | } 283 | .grid.has-cols-xs-8 > * { 284 | flex: 0 0 12.5%; 285 | max-width: 12.5%; 286 | } 287 | .grid.has-cols-xs-9 > * { 288 | flex: 0 0 11.11111%; 289 | max-width: 11.11111%; 290 | } 291 | .grid.has-cols-xs-10 > * { 292 | flex: 0 0 10%; 293 | max-width: 10%; 294 | } 295 | .grid.has-cols-xs-11 > * { 296 | flex: 0 0 9.09091%; 297 | max-width: 9.09091%; 298 | } 299 | .grid.has-cols-xs-12 > * { 300 | flex: 0 0 8.33333%; 301 | max-width: 8.33333%; 302 | } 303 | } 304 | 305 | @media only screen and (-ms-high-contrast: active) and (min-width: 37.5em), only screen and (-ms-high-contrast: none) and (min-width: 37.5em) { 306 | .grid.has-grid-gap-sm-0 { 307 | margin-right: 0; 308 | margin-left: 0; 309 | } 310 | .grid.has-grid-gap-sm-0 > * { 311 | padding-right: 0; 312 | padding-left: 0; 313 | margin-bottom: 0; 314 | } 315 | .grid.has-grid-gap-sm-1 { 316 | margin-right: -0.125rem; 317 | margin-left: -0.125rem; 318 | } 319 | .grid.has-grid-gap-sm-1 > * { 320 | padding-right: 0.125rem; 321 | padding-left: 0.125rem; 322 | margin-bottom: 0.25rem; 323 | } 324 | .grid.has-grid-gap-sm-2 { 325 | margin-right: -0.25rem; 326 | margin-left: -0.25rem; 327 | } 328 | .grid.has-grid-gap-sm-2 > * { 329 | padding-right: 0.25rem; 330 | padding-left: 0.25rem; 331 | margin-bottom: 0.5rem; 332 | } 333 | .grid.has-grid-gap-sm-3 { 334 | margin-right: -0.5rem; 335 | margin-left: -0.5rem; 336 | } 337 | .grid.has-grid-gap-sm-3 > * { 338 | padding-right: 0.5rem; 339 | padding-left: 0.5rem; 340 | margin-bottom: 1rem; 341 | } 342 | .grid.has-grid-gap-sm-4 { 343 | margin-right: -0.625rem; 344 | margin-left: -0.625rem; 345 | } 346 | .grid.has-grid-gap-sm-4 > * { 347 | padding-right: 0.625rem; 348 | padding-left: 0.625rem; 349 | margin-bottom: 1.25rem; 350 | } 351 | .grid.has-grid-gap-sm-5 { 352 | margin-right: -0.75rem; 353 | margin-left: -0.75rem; 354 | } 355 | .grid.has-grid-gap-sm-5 > * { 356 | padding-right: 0.75rem; 357 | padding-left: 0.75rem; 358 | margin-bottom: 1.5rem; 359 | } 360 | .grid.has-grid-gap-sm-6 { 361 | margin-right: -1.5rem; 362 | margin-left: -1.5rem; 363 | } 364 | .grid.has-grid-gap-sm-6 > * { 365 | padding-right: 1.5rem; 366 | padding-left: 1.5rem; 367 | margin-bottom: 3rem; 368 | } 369 | .grid.has-grid-gap-sm-7 { 370 | margin-right: -3rem; 371 | margin-left: -3rem; 372 | } 373 | .grid.has-grid-gap-sm-7 > * { 374 | padding-right: 3rem; 375 | padding-left: 3rem; 376 | margin-bottom: 6rem; 377 | } 378 | .grid.has-grid-gap-sm-8 { 379 | margin-right: -4.5rem; 380 | margin-left: -4.5rem; 381 | } 382 | .grid.has-grid-gap-sm-8 > * { 383 | padding-right: 4.5rem; 384 | padding-left: 4.5rem; 385 | margin-bottom: 9rem; 386 | } 387 | .grid.has-grid-gap-sm-9 { 388 | margin-right: -6rem; 389 | margin-left: -6rem; 390 | } 391 | .grid.has-grid-gap-sm-9 > * { 392 | padding-right: 6rem; 393 | padding-left: 6rem; 394 | margin-bottom: 12rem; 395 | } 396 | .grid.has-cols-sm-1 > * { 397 | flex: 0 0 100%; 398 | max-width: 100%; 399 | } 400 | .grid.has-cols-sm-2 > * { 401 | flex: 0 0 50%; 402 | max-width: 50%; 403 | } 404 | .grid.has-cols-sm-3 > * { 405 | flex: 0 0 33.33333%; 406 | max-width: 33.33333%; 407 | } 408 | .grid.has-cols-sm-4 > * { 409 | flex: 0 0 25%; 410 | max-width: 25%; 411 | } 412 | .grid.has-cols-sm-5 > * { 413 | flex: 0 0 20%; 414 | max-width: 20%; 415 | } 416 | .grid.has-cols-sm-6 > * { 417 | flex: 0 0 16.66667%; 418 | max-width: 16.66667%; 419 | } 420 | .grid.has-cols-sm-7 > * { 421 | flex: 0 0 14.28571%; 422 | max-width: 14.28571%; 423 | } 424 | .grid.has-cols-sm-8 > * { 425 | flex: 0 0 12.5%; 426 | max-width: 12.5%; 427 | } 428 | .grid.has-cols-sm-9 > * { 429 | flex: 0 0 11.11111%; 430 | max-width: 11.11111%; 431 | } 432 | .grid.has-cols-sm-10 > * { 433 | flex: 0 0 10%; 434 | max-width: 10%; 435 | } 436 | .grid.has-cols-sm-11 > * { 437 | flex: 0 0 9.09091%; 438 | max-width: 9.09091%; 439 | } 440 | .grid.has-cols-sm-12 > * { 441 | flex: 0 0 8.33333%; 442 | max-width: 8.33333%; 443 | } 444 | } 445 | 446 | @media only screen and (-ms-high-contrast: active) and (min-width: 56.25em), only screen and (-ms-high-contrast: none) and (min-width: 56.25em) { 447 | .grid.has-grid-gap-md-0 { 448 | margin-right: 0; 449 | margin-left: 0; 450 | } 451 | .grid.has-grid-gap-md-0 > * { 452 | padding-right: 0; 453 | padding-left: 0; 454 | margin-bottom: 0; 455 | } 456 | .grid.has-grid-gap-md-1 { 457 | margin-right: -0.125rem; 458 | margin-left: -0.125rem; 459 | } 460 | .grid.has-grid-gap-md-1 > * { 461 | padding-right: 0.125rem; 462 | padding-left: 0.125rem; 463 | margin-bottom: 0.25rem; 464 | } 465 | .grid.has-grid-gap-md-2 { 466 | margin-right: -0.25rem; 467 | margin-left: -0.25rem; 468 | } 469 | .grid.has-grid-gap-md-2 > * { 470 | padding-right: 0.25rem; 471 | padding-left: 0.25rem; 472 | margin-bottom: 0.5rem; 473 | } 474 | .grid.has-grid-gap-md-3 { 475 | margin-right: -0.5rem; 476 | margin-left: -0.5rem; 477 | } 478 | .grid.has-grid-gap-md-3 > * { 479 | padding-right: 0.5rem; 480 | padding-left: 0.5rem; 481 | margin-bottom: 1rem; 482 | } 483 | .grid.has-grid-gap-md-4 { 484 | margin-right: -0.625rem; 485 | margin-left: -0.625rem; 486 | } 487 | .grid.has-grid-gap-md-4 > * { 488 | padding-right: 0.625rem; 489 | padding-left: 0.625rem; 490 | margin-bottom: 1.25rem; 491 | } 492 | .grid.has-grid-gap-md-5 { 493 | margin-right: -0.75rem; 494 | margin-left: -0.75rem; 495 | } 496 | .grid.has-grid-gap-md-5 > * { 497 | padding-right: 0.75rem; 498 | padding-left: 0.75rem; 499 | margin-bottom: 1.5rem; 500 | } 501 | .grid.has-grid-gap-md-6 { 502 | margin-right: -1.5rem; 503 | margin-left: -1.5rem; 504 | } 505 | .grid.has-grid-gap-md-6 > * { 506 | padding-right: 1.5rem; 507 | padding-left: 1.5rem; 508 | margin-bottom: 3rem; 509 | } 510 | .grid.has-grid-gap-md-7 { 511 | margin-right: -3rem; 512 | margin-left: -3rem; 513 | } 514 | .grid.has-grid-gap-md-7 > * { 515 | padding-right: 3rem; 516 | padding-left: 3rem; 517 | margin-bottom: 6rem; 518 | } 519 | .grid.has-grid-gap-md-8 { 520 | margin-right: -4.5rem; 521 | margin-left: -4.5rem; 522 | } 523 | .grid.has-grid-gap-md-8 > * { 524 | padding-right: 4.5rem; 525 | padding-left: 4.5rem; 526 | margin-bottom: 9rem; 527 | } 528 | .grid.has-grid-gap-md-9 { 529 | margin-right: -6rem; 530 | margin-left: -6rem; 531 | } 532 | .grid.has-grid-gap-md-9 > * { 533 | padding-right: 6rem; 534 | padding-left: 6rem; 535 | margin-bottom: 12rem; 536 | } 537 | .grid.has-cols-md-1 > * { 538 | flex: 0 0 100%; 539 | max-width: 100%; 540 | } 541 | .grid.has-cols-md-2 > * { 542 | flex: 0 0 50%; 543 | max-width: 50%; 544 | } 545 | .grid.has-cols-md-3 > * { 546 | flex: 0 0 33.33333%; 547 | max-width: 33.33333%; 548 | } 549 | .grid.has-cols-md-4 > * { 550 | flex: 0 0 25%; 551 | max-width: 25%; 552 | } 553 | .grid.has-cols-md-5 > * { 554 | flex: 0 0 20%; 555 | max-width: 20%; 556 | } 557 | .grid.has-cols-md-6 > * { 558 | flex: 0 0 16.66667%; 559 | max-width: 16.66667%; 560 | } 561 | .grid.has-cols-md-7 > * { 562 | flex: 0 0 14.28571%; 563 | max-width: 14.28571%; 564 | } 565 | .grid.has-cols-md-8 > * { 566 | flex: 0 0 12.5%; 567 | max-width: 12.5%; 568 | } 569 | .grid.has-cols-md-9 > * { 570 | flex: 0 0 11.11111%; 571 | max-width: 11.11111%; 572 | } 573 | .grid.has-cols-md-10 > * { 574 | flex: 0 0 10%; 575 | max-width: 10%; 576 | } 577 | .grid.has-cols-md-11 > * { 578 | flex: 0 0 9.09091%; 579 | max-width: 9.09091%; 580 | } 581 | .grid.has-cols-md-12 > * { 582 | flex: 0 0 8.33333%; 583 | max-width: 8.33333%; 584 | } 585 | } 586 | 587 | @media only screen and (-ms-high-contrast: active) and (min-width: 75em), only screen and (-ms-high-contrast: none) and (min-width: 75em) { 588 | .grid.has-grid-gap-lg-0 { 589 | margin-right: 0; 590 | margin-left: 0; 591 | } 592 | .grid.has-grid-gap-lg-0 > * { 593 | padding-right: 0; 594 | padding-left: 0; 595 | margin-bottom: 0; 596 | } 597 | .grid.has-grid-gap-lg-1 { 598 | margin-right: -0.125rem; 599 | margin-left: -0.125rem; 600 | } 601 | .grid.has-grid-gap-lg-1 > * { 602 | padding-right: 0.125rem; 603 | padding-left: 0.125rem; 604 | margin-bottom: 0.25rem; 605 | } 606 | .grid.has-grid-gap-lg-2 { 607 | margin-right: -0.25rem; 608 | margin-left: -0.25rem; 609 | } 610 | .grid.has-grid-gap-lg-2 > * { 611 | padding-right: 0.25rem; 612 | padding-left: 0.25rem; 613 | margin-bottom: 0.5rem; 614 | } 615 | .grid.has-grid-gap-lg-3 { 616 | margin-right: -0.5rem; 617 | margin-left: -0.5rem; 618 | } 619 | .grid.has-grid-gap-lg-3 > * { 620 | padding-right: 0.5rem; 621 | padding-left: 0.5rem; 622 | margin-bottom: 1rem; 623 | } 624 | .grid.has-grid-gap-lg-4 { 625 | margin-right: -0.625rem; 626 | margin-left: -0.625rem; 627 | } 628 | .grid.has-grid-gap-lg-4 > * { 629 | padding-right: 0.625rem; 630 | padding-left: 0.625rem; 631 | margin-bottom: 1.25rem; 632 | } 633 | .grid.has-grid-gap-lg-5 { 634 | margin-right: -0.75rem; 635 | margin-left: -0.75rem; 636 | } 637 | .grid.has-grid-gap-lg-5 > * { 638 | padding-right: 0.75rem; 639 | padding-left: 0.75rem; 640 | margin-bottom: 1.5rem; 641 | } 642 | .grid.has-grid-gap-lg-6 { 643 | margin-right: -1.5rem; 644 | margin-left: -1.5rem; 645 | } 646 | .grid.has-grid-gap-lg-6 > * { 647 | padding-right: 1.5rem; 648 | padding-left: 1.5rem; 649 | margin-bottom: 3rem; 650 | } 651 | .grid.has-grid-gap-lg-7 { 652 | margin-right: -3rem; 653 | margin-left: -3rem; 654 | } 655 | .grid.has-grid-gap-lg-7 > * { 656 | padding-right: 3rem; 657 | padding-left: 3rem; 658 | margin-bottom: 6rem; 659 | } 660 | .grid.has-grid-gap-lg-8 { 661 | margin-right: -4.5rem; 662 | margin-left: -4.5rem; 663 | } 664 | .grid.has-grid-gap-lg-8 > * { 665 | padding-right: 4.5rem; 666 | padding-left: 4.5rem; 667 | margin-bottom: 9rem; 668 | } 669 | .grid.has-grid-gap-lg-9 { 670 | margin-right: -6rem; 671 | margin-left: -6rem; 672 | } 673 | .grid.has-grid-gap-lg-9 > * { 674 | padding-right: 6rem; 675 | padding-left: 6rem; 676 | margin-bottom: 12rem; 677 | } 678 | .grid.has-cols-lg-1 > * { 679 | flex: 0 0 100%; 680 | max-width: 100%; 681 | } 682 | .grid.has-cols-lg-2 > * { 683 | flex: 0 0 50%; 684 | max-width: 50%; 685 | } 686 | .grid.has-cols-lg-3 > * { 687 | flex: 0 0 33.33333%; 688 | max-width: 33.33333%; 689 | } 690 | .grid.has-cols-lg-4 > * { 691 | flex: 0 0 25%; 692 | max-width: 25%; 693 | } 694 | .grid.has-cols-lg-5 > * { 695 | flex: 0 0 20%; 696 | max-width: 20%; 697 | } 698 | .grid.has-cols-lg-6 > * { 699 | flex: 0 0 16.66667%; 700 | max-width: 16.66667%; 701 | } 702 | .grid.has-cols-lg-7 > * { 703 | flex: 0 0 14.28571%; 704 | max-width: 14.28571%; 705 | } 706 | .grid.has-cols-lg-8 > * { 707 | flex: 0 0 12.5%; 708 | max-width: 12.5%; 709 | } 710 | .grid.has-cols-lg-9 > * { 711 | flex: 0 0 11.11111%; 712 | max-width: 11.11111%; 713 | } 714 | .grid.has-cols-lg-10 > * { 715 | flex: 0 0 10%; 716 | max-width: 10%; 717 | } 718 | .grid.has-cols-lg-11 > * { 719 | flex: 0 0 9.09091%; 720 | max-width: 9.09091%; 721 | } 722 | .grid.has-cols-lg-12 > * { 723 | flex: 0 0 8.33333%; 724 | max-width: 8.33333%; 725 | } 726 | } 727 | 728 | @media only screen and (-ms-high-contrast: active) and (min-width: 112.5em), only screen and (-ms-high-contrast: none) and (min-width: 112.5em) { 729 | .grid.has-grid-gap-xl-0 { 730 | margin-right: 0; 731 | margin-left: 0; 732 | } 733 | .grid.has-grid-gap-xl-0 > * { 734 | padding-right: 0; 735 | padding-left: 0; 736 | margin-bottom: 0; 737 | } 738 | .grid.has-grid-gap-xl-1 { 739 | margin-right: -0.125rem; 740 | margin-left: -0.125rem; 741 | } 742 | .grid.has-grid-gap-xl-1 > * { 743 | padding-right: 0.125rem; 744 | padding-left: 0.125rem; 745 | margin-bottom: 0.25rem; 746 | } 747 | .grid.has-grid-gap-xl-2 { 748 | margin-right: -0.25rem; 749 | margin-left: -0.25rem; 750 | } 751 | .grid.has-grid-gap-xl-2 > * { 752 | padding-right: 0.25rem; 753 | padding-left: 0.25rem; 754 | margin-bottom: 0.5rem; 755 | } 756 | .grid.has-grid-gap-xl-3 { 757 | margin-right: -0.5rem; 758 | margin-left: -0.5rem; 759 | } 760 | .grid.has-grid-gap-xl-3 > * { 761 | padding-right: 0.5rem; 762 | padding-left: 0.5rem; 763 | margin-bottom: 1rem; 764 | } 765 | .grid.has-grid-gap-xl-4 { 766 | margin-right: -0.625rem; 767 | margin-left: -0.625rem; 768 | } 769 | .grid.has-grid-gap-xl-4 > * { 770 | padding-right: 0.625rem; 771 | padding-left: 0.625rem; 772 | margin-bottom: 1.25rem; 773 | } 774 | .grid.has-grid-gap-xl-5 { 775 | margin-right: -0.75rem; 776 | margin-left: -0.75rem; 777 | } 778 | .grid.has-grid-gap-xl-5 > * { 779 | padding-right: 0.75rem; 780 | padding-left: 0.75rem; 781 | margin-bottom: 1.5rem; 782 | } 783 | .grid.has-grid-gap-xl-6 { 784 | margin-right: -1.5rem; 785 | margin-left: -1.5rem; 786 | } 787 | .grid.has-grid-gap-xl-6 > * { 788 | padding-right: 1.5rem; 789 | padding-left: 1.5rem; 790 | margin-bottom: 3rem; 791 | } 792 | .grid.has-grid-gap-xl-7 { 793 | margin-right: -3rem; 794 | margin-left: -3rem; 795 | } 796 | .grid.has-grid-gap-xl-7 > * { 797 | padding-right: 3rem; 798 | padding-left: 3rem; 799 | margin-bottom: 6rem; 800 | } 801 | .grid.has-grid-gap-xl-8 { 802 | margin-right: -4.5rem; 803 | margin-left: -4.5rem; 804 | } 805 | .grid.has-grid-gap-xl-8 > * { 806 | padding-right: 4.5rem; 807 | padding-left: 4.5rem; 808 | margin-bottom: 9rem; 809 | } 810 | .grid.has-grid-gap-xl-9 { 811 | margin-right: -6rem; 812 | margin-left: -6rem; 813 | } 814 | .grid.has-grid-gap-xl-9 > * { 815 | padding-right: 6rem; 816 | padding-left: 6rem; 817 | margin-bottom: 12rem; 818 | } 819 | .grid.has-cols-xl-1 > * { 820 | flex: 0 0 100%; 821 | max-width: 100%; 822 | } 823 | .grid.has-cols-xl-2 > * { 824 | flex: 0 0 50%; 825 | max-width: 50%; 826 | } 827 | .grid.has-cols-xl-3 > * { 828 | flex: 0 0 33.33333%; 829 | max-width: 33.33333%; 830 | } 831 | .grid.has-cols-xl-4 > * { 832 | flex: 0 0 25%; 833 | max-width: 25%; 834 | } 835 | .grid.has-cols-xl-5 > * { 836 | flex: 0 0 20%; 837 | max-width: 20%; 838 | } 839 | .grid.has-cols-xl-6 > * { 840 | flex: 0 0 16.66667%; 841 | max-width: 16.66667%; 842 | } 843 | .grid.has-cols-xl-7 > * { 844 | flex: 0 0 14.28571%; 845 | max-width: 14.28571%; 846 | } 847 | .grid.has-cols-xl-8 > * { 848 | flex: 0 0 12.5%; 849 | max-width: 12.5%; 850 | } 851 | .grid.has-cols-xl-9 > * { 852 | flex: 0 0 11.11111%; 853 | max-width: 11.11111%; 854 | } 855 | .grid.has-cols-xl-10 > * { 856 | flex: 0 0 10%; 857 | max-width: 10%; 858 | } 859 | .grid.has-cols-xl-11 > * { 860 | flex: 0 0 9.09091%; 861 | max-width: 9.09091%; 862 | } 863 | .grid.has-cols-xl-12 > * { 864 | flex: 0 0 8.33333%; 865 | max-width: 8.33333%; 866 | } 867 | } 868 | 869 | /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1peGlucy9fbWVkaWEtcXVlcmllcy5zY3NzIiwibGF5b3V0cy9fZ3JpZC1mYWxsYmFjay1pZS5zY3NzIiwidmFyaWFibGVzL19zcGFjZXJzLnNjc3MiLCJhdG9taWMtYnVsbGRvZy1ncmlkLWZhbGxiYWNrLWllLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQkFBc0I7QUNBdEIsd0VBQXdFO0FBRXhFO0VBQ0UsdUJBQXNCO0NBQ3ZCOztBQUVELGdEQUFnRDtBQUNoRDtFQUVFO0lBQ0UsY0FBYTtJQUNiLGdCQUFlO0lBQ2Ysb0JBQW1CO0lBQ25CLHdCQUF3QztJQUN4Qyx1QkFBdUM7R0EwRHhDO0VBL0REO0lBUUksbUJBQXVDO0lBQ3ZDLG9CQUF3QztJQUN4QyxnQkFBZTtJQUNmLHdCQUFrQztJQUNsQyx1QkFBaUM7SUFDakMsdUJDZnlCO0dEZ0IxQjtFQWRIO0lBa0JNLGdCQUEyQztJQUMzQyxlQUEwQztHQU8zQztFQTFCTDtJQXNCUSxpQkFBcUM7SUFDckMsZ0JBQW9DO0lBQ3BDLGlCQzNCSjtHRDRCRztFQXpCUDtJQWtCTSx3QkFBMkM7SUFDM0MsdUJBQTBDO0dBTzNDO0VBMUJMO0lBc0JRLHdCQUFxQztJQUNyQyx1QkFBb0M7SUFDcEMsdUJDMUJxQjtHRDJCdEI7RUF6QlA7SUFrQk0sdUJBQTJDO0lBQzNDLHNCQUEwQztHQU8zQztFQTFCTDtJQXNCUSx1QkFBcUM7SUFDckMsc0JBQW9DO0lBQ3BDLHNCQ3pCb0I7R0QwQnJCO0VBekJQO0lBa0JNLHNCQUEyQztJQUMzQyxxQkFBMEM7R0FPM0M7RUExQkw7SUFzQlEsc0JBQXFDO0lBQ3JDLHFCQUFvQztJQUNwQyxvQkM5QmE7R0QrQmQ7RUF6QlA7SUFrQk0sd0JBQTJDO0lBQzNDLHVCQUEwQztHQU8zQztFQTFCTDtJQXNCUSx3QkFBcUM7SUFDckMsdUJBQW9DO0lBQ3BDLHVCQ3ZCcUI7R0R3QnRCO0VBekJQO0lBa0JNLHVCQUEyQztJQUMzQyxzQkFBMEM7R0FPM0M7RUExQkw7SUFzQlEs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SUF3RFksZUFBNEI7SUFDNUIsZ0JBQTZCO0dBQzlCO0VBMURYO0lBd0RZLGNBQTRCO0lBQzVCLGVBQTZCO0dBQzlCO0VBMURYO0lBd0RZLG9CQUE0QjtJQUM1QixxQkFBNkI7R0FDOUI7RUExRFg7SUF3RFksY0FBNEI7SUFDNUIsZUFBNkI7R0FDOUI7RUExRFg7SUF3RFksY0FBNEI7SUFDNUIsZUFBNkI7R0FDOUI7RUExRFg7SUF3RFksb0JBQTRCO0lBQzVCLHFCQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxvQkFBNEI7SUFDNUIscUJBQTZCO0dBQzlCO0VBMURYO0lBd0RZLGdCQUE0QjtJQUM1QixpQkFBNkI7R0FDOUI7RUExRFg7SUF3RFksb0JBQTRCO0lBQzVCLHFCQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxjQUE0QjtJQUM1QixlQUE2QjtHQUM5QjtFQTFEWDtJQXdEWSxtQkFBNEI7SUFDNUIsb0JBQTZCO0dBQzlCO0VBMURYO0lBd0RZLG1CQUE0QjtJQUM1QixvQkFBNkI7R0FDOUI7Q0UreEJaIiwiZmlsZSI6ImF0b21pYy1idWxsZG9nLWdyaWQtZmFsbGJhY2staWUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLypNaW4gYW5kIE1heCBtaXhpbnMqL1xyXG5AbWl4aW4gbWluKCRicCwgJG1heDogXCJudWxsXCIsICRkZXZpY2U6IFwic2NyZWVuXCIpIHtcclxuICBAaWYgJG1heCA9PSBcIm51bGxcIiB7XHJcbiAgICBAbWVkaWEgb25seSAjeyRkZXZpY2V9IGFuZCAobWluLXdpZHRoOiAjeyRicH0pIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICBAbWVkaWEgb25seSAjeyRkZXZpY2V9IGFuZCAobWluLXdpZHRoOiAjeyRicH0pIGFuZCAobWF4LXdpZHRoOiAjeyRtYXh9KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQG1peGluIG1heCgkYnAsICRtaW46IFwibnVsbFwiLCAkZGV2aWNlOiBcInNjcmVlblwiKSB7XHJcbiAgQGlmICRtaW4gPT0gXCJudWxsXCIge1xyXG4gICAgQG1lZGlhIG9ubHkgI3skZGV2aWNlfSBhbmQgKG1heC13aWR0aDogI3skYnB9KSB7XHJcbiAgICAgIEBjb250ZW50O1xyXG4gICAgfVxyXG4gIH0gQGVsc2Uge1xyXG4gICAgQG1lZGlhIG9ubHkgI3skZGV2aWNlfSBhbmQgKG1heC13aWR0aDogI3skYnB9KSBhbmQgKG1pbi13aWR0aDogI3skbWlufSkge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyBLU1MgRG9jdW1lbnRhdGlvblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8vIG1pbigje2JwKHlvdXIgYnApfSl7fVxyXG4vL1xyXG4vLyBgQGluY2x1ZGUgbWluKCRicCwgJG1heDogXCJudWxsXCIsICRkZXZpY2U6IFwic2NyZWVuXCIpe31gXHJcbi8vXHJcbi8vIFBhcmFtZXRlcnM6XHJcbi8vICogYCRicGAgLSBCcmVha3BvaW50cyBhcmUgZGVmaW5lcyBpbiB0aGUgbWFwIHZhcmlhYmxlcyBgJGJyZWFrcG9pbnRzYCwgYnJlYWtwb2ludHMgY2FuIGJlIGNhbGxlZCB3aXRoIHRoZSBmdW5jdGlvbiBgYnAoKWAuIEFzIHdlIGNhbGwgYSBmdW5jdGlvblxyXG4vLyBpbnNpZGUgYSBtaXhpbiB3ZSB3aWxsIG5lZWQgdG8gdXNlIHNhc3MgaW50ZXJwb2xhdGlvbiwgYCN7YnAoKX1gLiBUaGlzIHdpbGwgcmV0dXJuIGEgdmFsdWUgaW4gZW0uXHJcbi8vICogYCRtYXhgIC0gT3B0aW9uYWwgbWF4IHZhbHVlLCB1c2luZyAkYnJlYWtwb2ludHMgbWFwXHJcbi8vICogYCRkZXZpY2VgIC0gRGVmYXVsdCBzY3JlZW5cclxuLy9cclxuLy8gVXNhZ2U6XHJcbi8vICogYGgye0BpbmNsdWRlIG1pbigje2JwKHNtKX0pe2ZvbnQtc2l6ZTogZm9udC1zaXplKDIpO319YFxyXG4vLyBcclxuLy8gT3V0cHV0OlxyXG4vLyAqIGBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDM2ZW0pIHtoMntmb250LXNpemU6IDIuNXJlbTt9YFxyXG4vL1xyXG4vLyBTdHlsZWd1aWRlIE1peGlucy5taW5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4vLyBtYXgoI3ticCh5b3VyIGJwKX0pe31cclxuLy9cclxuLy8gYEBpbmNsdWRlIG1heCgkYnAsICRtaW46IFwibnVsbFwiLCAkZGV2aWNlOiBcInNjcmVlblwiKXt9YFxyXG4vL1xyXG4vLyAvIVxcIEF0b21pYyBCdWxsZG9nIGlzIG1vYmlsZSBmaXJzdCwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHVzZSBtYXggbWVkaWEgcXVlcmllc1xyXG4vL1xyXG4vLyBQYXJhbWV0ZXJzOlxyXG4vLyAqIGAkYnBgIC0gQnJlYWtwb2ludHMgYXJlIGRlZmluZXMgaW4gdGhlIG1hcCB2YXJpYWJsZXMgYCRicmVha3BvaW50c2AsIGJyZWFrcG9pbnRzIGNhbiBiZSBjYWxsZWQgd2l0aCB0aGUgZnVuY3Rpb24gYGJwKClgLiBBcyB3ZSBjYWxsIGEgZnVuY3Rpb25cclxuLy8gaW5zaWRlIGEgbWl4aW4gd2Ugd2lsbCBuZWVkIHRvIHVzZSBzYXNzIGludGVycG9sYXRpb24sIGAje2JwKCl9YC4gVGhpcyB3aWxsIHJldHVybiBhIHZhbHVlIGluIGVtLlxyXG4vLyAqIGAkbWluYCAtIE9wdGlvbmFsIG1pbiB2YWx1ZSwgdXNpbmcgJGJyZWFrcG9pbnRzIG1hcFxyXG4vLyAqIGAkZGV2aWNlYCAtIERlZmF1bHQgc2NyZWVuXHJcbi8vXHJcbi8vIFVzYWdlOlxyXG4vLyAqIGBoMntAaW5jbHVkZSBtYXgoI3ticChzbSl9KXtmb250LXNpemU6IGZvbnQtc2l6ZSgyKTt9fWBcclxuLy8gXHJcbi8vIE91dHB1dDpcclxuLy8gKiBgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzNmVtKSB7aDJ7Zm9udC1zaXplOiAyLjVyZW07fWBcclxuLy9cclxuLy8gU3R5bGVndWlkZSBNaXhpbnMubWF4IiwiLyogUHJvZ3Jlc3NpdmUgRW5oYW5jZW1lbnQgZm9yIGJyb3dzZXJzIG5vdCBzdXBwb3J0aW5nIGdyaWQgZXhjZXB0IElFICovXHJcblxyXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVye1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbi8qIElFMTAgYW5kIDExIEZhbGxiYWNrIHRvIGJlIHJlbW92ZSB3aGVuIDwgMSUqL1xyXG5AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSksXHJcbiAgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIHtcclxuICAuZ3JpZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIG1hcmdpbi1yaWdodDogKHNwYWNlcigxLCB0cnVlKSAqIC0xKSAvIDI7XHJcbiAgICBtYXJnaW4tbGVmdDogKHNwYWNlcigxLCB0cnVlKSAqIC0xKSAvIDI7XHJcblxyXG4gICAgJiA+ICoge1xyXG4gICAgICBmbGV4OiAwIDAgcGVyY2VudGFnZSgxIC8gJGdyaWQtY29sdW1ucyk7XHJcbiAgICAgIG1heC13aWR0aDogcGVyY2VudGFnZSgxIC8gJGdyaWQtY29sdW1ucyk7XHJcbiAgICAgIG1pbi1oZWlnaHQ6IDFweDtcclxuICAgICAgcGFkZGluZy1yaWdodDogc3BhY2VyKDEsIHRydWUpIC8gMjtcclxuICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjZXIoMSwgdHJ1ZSkgLyAyO1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiBzcGFjZXIoMSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQGVhY2ggJGtleSwgJHNwYWNlciBpbiAkc3BhY2VycyB7XHJcbiAgICAgICYuaGFzLWdyaWQtZ2FwLSN7JGtleX0ge1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogKHNwYWNlcigka2V5LCB0cnVlKSAqIC0xKSAvIDI7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IChzcGFjZXIoJGtleSwgdHJ1ZSkgKiAtMSkgLyAyO1xyXG5cclxuICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBzcGFjZXIoJGtleSwgdHJ1ZSkgLyAyO1xyXG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiBzcGFjZXIoJGtleSwgdHJ1ZSkgLyAyO1xyXG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2VyKCRrZXksIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtY29sdW1ucyB7XHJcbiAgICAgICYuaGFzLWNvbHMtI3skaX0ge1xyXG4gICAgICAgICYgPiAqIHtcclxuICAgICAgICAgIGZsZXg6IDAgMCBwZXJjZW50YWdlKDEgLyAkaSk7XHJcbiAgICAgICAgICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBAZWFjaCAkYnAsICRicEtleSBpbiAkYnJlYWtwb2ludHMge1xyXG4gICAgICBAaW5jbHVkZSBtaW4oI3ticCgjeyRicH0pfSkge1xyXG4gICAgICAgIEBlYWNoICRrZXksICRzcGFjZXIgaW4gJHNwYWNlcnMge1xyXG4gICAgICAgICAgJi5oYXMtZ3JpZC1nYXAtI3skYnB9LSN7JGtleX0ge1xyXG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IChzcGFjZXIoJGtleSwgdHJ1ZSkgKiAtMSkgLyAyO1xyXG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogKHNwYWNlcigka2V5LCB0cnVlKSAqIC0xKSAvIDI7XHJcblxyXG4gICAgICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogc3BhY2VyKCRrZXksIHRydWUpIC8gMjtcclxuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHNwYWNlcigka2V5LCB0cnVlKSAvIDI7XHJcbiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogc3BhY2VyKCRrZXksIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRncmlkLWNvbHVtbnMge1xyXG4gICAgICAgICAgJi5oYXMtY29scy0jeyRicH0tI3skaX0ge1xyXG4gICAgICAgICAgICAmID4gKiB7XHJcbiAgICAgICAgICAgICAgZmxleDogMCAwIHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICAgICAgICBtYXgtd2lkdGg6IHBlcmNlbnRhZ2UoMSAvICRpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIEtTUyBEb2N1bWVudGF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gRG9jIGluIF9ncmlkLWZhbGxiYWNrLnNjc3MiLCIvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gU2FzcyBWYXJpYWJsZXNcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiRzcGFjZXItcmVmZXJlbmNlOiAxcmVtO1xyXG4kc3BhY2VyLXByZWZpeDogLS1zcGFjZXItO1xyXG4kc3BhY2VyczogKFxyXG4gIDA6IDAsXHJcbiAgMTogKCRzcGFjZXItcmVmZXJlbmNlICogMC4yNSksXHJcbiAgMjogKCRzcGFjZXItcmVmZXJlbmNlICogMC41KSxcclxuICAzOiAkc3BhY2VyLXJlZmVyZW5jZSxcclxuICA0OiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjI1KSxcclxuICA1OiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjUpLFxyXG4gIDY6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDMpLFxyXG4gIDc6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDYpLFxyXG4gIDg6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDkpLFxyXG4gIDk6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDEyKVxyXG4pO1xyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNldCBzcGFjZXIgZnVuY3Rpb25cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkBmdW5jdGlvbiBzcGFjZXIoJHNwYWNlciwgJHRydWUtdmFsOmZhbHNlKSB7XHJcbiAgQGlmICR1c2UtY3NzLXZhciA9PSB0cnVlIHtcclxuICAgIEBpZiAkdHJ1ZS12YWwgPT0gdHJ1ZSB7XHJcbiAgICAgIEByZXR1cm4gbWFwLWdldCgkc3BhY2VycywgJHNwYWNlcik7IC8vVHJ1ZSBWYWxcclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICBAcmV0dXJuIHZhcigjeyRzcGFjZXItcHJlZml4fSN7JHNwYWNlcn0pOyAvL0NTUyBWYXJcclxuICAgIH1cclxuICB9IEBlbHNlIHtcclxuICAgIEByZXR1cm4gbWFwLWdldCgkc3BhY2VycywgJHNwYWNlcik7IC8vRGlzYWJsZWQgQ1NTIFZhclxyXG4gIH1cclxufVxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNldCByb290IHZhcmlhYmxlc1xyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuQGlmICR1c2UtY3NzLXZhciA9PSB0cnVlIHtcclxuICAjeyRyb290LWRlZmF1bHR9IHtcclxuICAgIEBlYWNoICRuYW1lLCAkc3BhY2VyIGluICRzcGFjZXJzIHtcclxuICAgICAgI3skc3BhY2VyLXByZWZpeH0jeyRuYW1lfTogJHNwYWNlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vL0tTUyBEb2N1bWVudGF0aW9uXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLy8gU3BhY2Vyc1xyXG4vL1xyXG4vLyBTcGFjZXJzIGlzIHVzZSB0byBmb3IgcGFkZGluZyBhbmQgbWFyZ2luIGdyaWQtZ2FwIGluIHRoZSBwcm9qZWN0LiBUaGUgYmFzZSB2YWx1ZSBpcyBzZXQgd2l0aCAkc3BhY2VyLXJlZmVyZW5jZSAoMXJlbSlcclxuLy9cclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcbi8vICogYDBgOiAwLFxyXG4vLyAqIGAxYDogKCRzcGFjZXItcmVmZXJlbmNlICogMC4yNSksXHJcbi8vICogYDJgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAwLjUpLFxyXG4vLyAqIGAzYDogJHNwYWNlci1yZWZlcmVuY2UsXHJcbi8vICogYDRgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxLjI1KSxcclxuLy8gKiBgNWA6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDEuNSksXHJcbi8vICogYDZgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAzKSxcclxuLy8gKiBgN2A6ICgkc3BhY2VyLXJlZmVyZW5jZSAqIDYpLFxyXG4vLyAqIGA4YDogKCRzcGFjZXItcmVmZXJlbmNlICogOSksXHJcbi8vICogYDlgOiAoJHNwYWNlci1yZWZlcmVuY2UgKiAxMilcclxuLy8gLS0tLS0tLS0tLS0tLS0tXHJcbi8vXHJcbi8vIHNwYWNlciBzaXplcyBjYW4gYmUgY2FsbGVkIGluIHRoZSBzYXNzIHByb2plY3QgdXNpbmcgdGhlIGZ1bmN0aW9uczpcclxuLy9cclxuLy8gYHNwYWNlcigkc3BhY2VyLCAkdHJ1ZS12YWw6ZmFsc2UpYCB3aGljaCB3aWxsIG91dHB1dCBieSBkZWZhdWx0IHRoZSBDU1MgdmFyaWFibGVcclxuLy9cclxuLy8gVXNhZ2Ugb2YgZ3JpZC1pdGVtLXNpemUoKTpcclxuLy8gKiBgc3BhY2VyKDQpYCA9PiBgdmFyKC0tc3BhY2VyLTQpYCBJZiAkdXNlLWNzcy12YXIgPSB0cnVlXHJcbi8vICogYHNwYWNlcig0KWAgPT4gYDEuMjVyZW1gIElmICR1c2UtY3NzLXZhciA9IGZhbHNlXHJcbi8vICogYHNwYWNlcig0LCB0cnVlKWAgPT4gYDEuMjVyZW1gXHJcbi8vXHJcbi8vIFN0eWxlZ3VpZGUgVmFyaWFibGVzLlNwYWNlcnMiLCIvKk1pbiBhbmQgTWF4IG1peGlucyovXG4vKiBQcm9ncmVzc2l2ZSBFbmhhbmNlbWVudCBmb3IgYnJvd3NlcnMgbm90IHN1cHBvcnRpbmcgZ3JpZCBleGNlcHQgSUUgKi9cbiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vKiBJRTEwIGFuZCAxMSBGYWxsYmFjayB0byBiZSByZW1vdmUgd2hlbiA8IDElKi9cbkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSwgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIHtcbiAgLmdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZCA+ICoge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlO1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTAge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtMCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMTI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4xMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTEgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC0yID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTMgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTUgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTYge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC03IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtNyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLTgge1xuICAgIG1hcmdpbi1yaWdodDogLTQuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTQuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtOCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDQuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA5cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC05IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC02cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtOSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEycmVtO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtNyA+ICoge1xuICAgIGZsZXg6IDAgMCAxNC4yODU3MSU7XG4gICAgbWF4LXdpZHRoOiAxNC4yODU3MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtOCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMi41JTtcbiAgICBtYXgtd2lkdGg6IDEyLjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTkgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTEuMTExMTElO1xuICAgIG1heC13aWR0aDogMTEuMTExMTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEwID4gKiB7XG4gICAgZmxleDogMCAwIDEwJTtcbiAgICBtYXgtd2lkdGg6IDEwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy0xMSA+ICoge1xuICAgIGZsZXg6IDAgMCA5LjA5MDkxJTtcbiAgICBtYXgtd2lkdGg6IDkuMDkwOTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLTEyID4gKiB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgYW5kIChtaW4td2lkdGg6IDIwZW0pLCBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSBhbmQgKG1pbi13aWR0aDogMjBlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteHMtOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhzLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14cy05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14cy04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXhzLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteHMtMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSBhbmQgKG1pbi13aWR0aDogMzcuNWVtKSwgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkgYW5kIChtaW4td2lkdGg6IDM3LjVlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtc20tOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXNtLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1zbS05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1zbS04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXNtLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtc20tMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSBhbmQgKG1pbi13aWR0aDogNTYuMjVlbSksIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpIGFuZCAobWluLXdpZHRoOiA1Ni4yNWVtKSB7XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0wIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTAgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0xIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjEyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMTI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0xID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4xMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjEyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0yIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtMiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtMyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC0zID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTQge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTQgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjYyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNjI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTUge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNzVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC01ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC43NXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC02IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTYgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtNyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtM3JlbTtcbiAgICBtYXJnaW4tbGVmdDogLTNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTcgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xuICAgIHBhZGRpbmctbGVmdDogM3JlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA2cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1tZC04IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC00LjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC00LjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTggPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0LjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA0LjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogOXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbWQtOSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNnJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLW1kLTkgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiA2cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xID4gKiB7XG4gICAgZmxleDogMCAwIDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgNTAlO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTMgPiAqIHtcbiAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICAgIG1heC13aWR0aDogMzMuMzMzMzMlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTQgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjUlO1xuICAgIG1heC13aWR0aDogMjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTUgPiAqIHtcbiAgICBmbGV4OiAwIDAgMjAlO1xuICAgIG1heC13aWR0aDogMjAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTYgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTYuNjY2NjclO1xuICAgIG1heC13aWR0aDogMTYuNjY2NjclO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTcgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTQuMjg1NzElO1xuICAgIG1heC13aWR0aDogMTQuMjg1NzElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLW1kLTggPiAqIHtcbiAgICBmbGV4OiAwIDAgMTIuNSU7XG4gICAgbWF4LXdpZHRoOiAxMi41JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC05ID4gKiB7XG4gICAgZmxleDogMCAwIDExLjExMTExJTtcbiAgICBtYXgtd2lkdGg6IDExLjExMTExJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xMCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMCU7XG4gICAgbWF4LXdpZHRoOiAxMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbWQtMTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgOS4wOTA5MSU7XG4gICAgbWF4LXdpZHRoOiA5LjA5MDkxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1tZC0xMiA+ICoge1xuICAgIGZsZXg6IDAgMCA4LjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDguMzMzMzMlO1xuICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIGFuZCAobWluLXdpZHRoOiA3NWVtKSwgb25seSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSkgYW5kIChtaW4td2lkdGg6IDc1ZW0pIHtcbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTAge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctMCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTEge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMTI1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC4xMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTEgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjEyNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMTI1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTIge1xuICAgIG1hcmdpbi1yaWdodDogLTAuMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy0yID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC4yNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy0zIHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTMgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNzVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTUgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTYge1xuICAgIG1hcmdpbi1yaWdodDogLTEuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNiA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy03IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0zcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtM3JlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctNyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDNyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAzcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDZyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLWxnLTgge1xuICAgIG1hcmdpbi1yaWdodDogLTQuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTQuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctOCA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDQuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDQuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA5cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC1sZy05IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC02cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAtbGctOSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiA2cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEycmVtO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctMiA+ICoge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctMyA+ICoge1xuICAgIGZsZXg6IDAgMCAzMy4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNCA+ICoge1xuICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgbWF4LXdpZHRoOiAyNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNSA+ICoge1xuICAgIGZsZXg6IDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiAyMCU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNiA+ICoge1xuICAgIGZsZXg6IDAgMCAxNi42NjY2NyU7XG4gICAgbWF4LXdpZHRoOiAxNi42NjY2NyU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctNyA+ICoge1xuICAgIGZsZXg6IDAgMCAxNC4yODU3MSU7XG4gICAgbWF4LXdpZHRoOiAxNC4yODU3MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMtbGctOCA+ICoge1xuICAgIGZsZXg6IDAgMCAxMi41JTtcbiAgICBtYXgtd2lkdGg6IDEyLjUlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTkgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTEuMTExMTElO1xuICAgIG1heC13aWR0aDogMTEuMTExMTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEwID4gKiB7XG4gICAgZmxleDogMCAwIDEwJTtcbiAgICBtYXgtd2lkdGg6IDEwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy1sZy0xMSA+ICoge1xuICAgIGZsZXg6IDAgMCA5LjA5MDkxJTtcbiAgICBtYXgtd2lkdGg6IDkuMDkwOTElO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLWxnLTEyID4gKiB7XG4gICAgZmxleDogMCAwIDguMzMzMzMlO1xuICAgIG1heC13aWR0aDogOC4zMzMzMyU7XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgYW5kIChtaW4td2lkdGg6IDExMi41ZW0pLCBvbmx5IHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSBhbmQgKG1pbi13aWR0aDogMTEyLjVlbSkge1xuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC0wID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4xMjVyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuMTI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4xMjVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuMjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTIgPiAqIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTMge1xuICAgIG1hcmdpbi1yaWdodDogLTAuNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtMyA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC00IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjYyNXJlbTtcbiAgICBtYXJnaW4tbGVmdDogLTAuNjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC00ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMC42MjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC01IHtcbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtNSA+ICoge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuNzVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAwLjc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtNiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMS41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC02ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogMS41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTcge1xuICAgIG1hcmdpbi1yaWdodDogLTNyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0zcmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC03ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogM3JlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogNnJlbTtcbiAgfVxuICAuZ3JpZC5oYXMtZ3JpZC1nYXAteGwtOCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNC41cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtNC41cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC04ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNC41cmVtO1xuICAgIHBhZGRpbmctbGVmdDogNC41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDlyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWdyaWQtZ2FwLXhsLTkge1xuICAgIG1hcmdpbi1yaWdodDogLTZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC02cmVtO1xuICB9XG4gIC5ncmlkLmhhcy1ncmlkLWdhcC14bC05ID4gKiB7XG4gICAgcGFkZGluZy1yaWdodDogNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDZyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMTJyZW07XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC0yID4gKiB7XG4gICAgZmxleDogMCAwIDUwJTtcbiAgICBtYXgtd2lkdGg6IDUwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC0zID4gKiB7XG4gICAgZmxleDogMCAwIDMzLjMzMzMzJTtcbiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC00ID4gKiB7XG4gICAgZmxleDogMCAwIDI1JTtcbiAgICBtYXgtd2lkdGg6IDI1JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC01ID4gKiB7XG4gICAgZmxleDogMCAwIDIwJTtcbiAgICBtYXgtd2lkdGg6IDIwJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC02ID4gKiB7XG4gICAgZmxleDogMCAwIDE2LjY2NjY3JTtcbiAgICBtYXgtd2lkdGg6IDE2LjY2NjY3JTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC03ID4gKiB7XG4gICAgZmxleDogMCAwIDE0LjI4NTcxJTtcbiAgICBtYXgtd2lkdGg6IDE0LjI4NTcxJTtcbiAgfVxuICAuZ3JpZC5oYXMtY29scy14bC04ID4gKiB7XG4gICAgZmxleDogMCAwIDEyLjUlO1xuICAgIG1heC13aWR0aDogMTIuNSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtOSA+ICoge1xuICAgIGZsZXg6IDAgMCAxMS4xMTExMSU7XG4gICAgbWF4LXdpZHRoOiAxMS4xMTExMSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMTAgPiAqIHtcbiAgICBmbGV4OiAwIDAgMTAlO1xuICAgIG1heC13aWR0aDogMTAlO1xuICB9XG4gIC5ncmlkLmhhcy1jb2xzLXhsLTExID4gKiB7XG4gICAgZmxleDogMCAwIDkuMDkwOTElO1xuICAgIG1heC13aWR0aDogOS4wOTA5MSU7XG4gIH1cbiAgLmdyaWQuaGFzLWNvbHMteGwtMTIgPiAqIHtcbiAgICBmbGV4OiAwIDAgOC4zMzMzMyU7XG4gICAgbWF4LXdpZHRoOiA4LjMzMzMzJTtcbiAgfVxufVxuIl19 */ 870 | --------------------------------------------------------------------------------