This example demonstrates the DataViews Card Layout Engine.
The card layout engine places each row in a defined block, or card.
Each card is formatted in a row template and placed in a cell in a layout grid.
This example shows two forms of card layout: a typical grid and a list. Use the buttons on the top right to switch between the two.
In this sample, the following code is used to initialize the object:
Note the following:
A reference cardlayout.js is used.
The key component is the CardLayout constructor. It loads the card layout engine.
The rowTemplate option names the <template> element that lays out the cards.
The direction option determines how the cards are arranged.
<!DOCTYPE html>
<html lang="en">
<head>
<base href="/dataviewsjs/demos/en/sample/DataViews/Card/CardLayoutEngine/angular/" />
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="This example demonstrates the DataViews Card Layout Engine." />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Card Layout Engine | Data Views | MESCIUS DataViewsJS Angular Demos</title>
<link href="/dataviewsjs/demos/node_modules/normalize.css/normalize.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/css/base.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/css/bootstrap-snippet.min.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/dataviews/gc.dataviews.core.min.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/dataviews/gc.dataviews.cardlayout.min.css" rel="stylesheet" type="text/css" />
<link href="styles.css" rel="stylesheet" type="text/css" />
<script src="/dataviewsjs/demos/static/js/angular-polyfills.min.js" type="text/javascript"></script>
<script type="text/javascript">
window.process = {
env: {
NODE_ENV: 'production',
USE_NPM: false,
USE_CDN: false,
SITE_ROOT: '/dataviewsjs/demos',
FRAMEWORK: 'angular',
DVJS_LICENSE_KEY:
'E348418822993781#B0EWvwY4dNNVQqJHUDpFROVWe5ZWNYFlVQFmRsJWRht4Z6lDO4Vla7YUaXhEWxd7Z5YXMuRnY7tWTQRHSlVnaYlXNhlEOpdkZ0FHWYJ5QKd6VXN5aR3ieGhUav9kZTBXWahkYBhEVutmZ72CbjdlZvV5TVdGdiplQsZXe95kUmNmZVF5cJ3mcypWNyx4UydESE3UblxGZyE7KQ94R4BjbUxUewsiaoREMxRDNllWREV6Voh4Q4dDZPRjWrIzUJl4TERXcQZWMHp4Sp9WaMZzN5o6StJmVDJXcwIVVmR6UMVGOlxUW8RmTxZDZTJWVN5GZqJHZuVDMkVGSW3WdxNzKCdDdSB7TzY7cqlnMU5GVyNzNP9WMyhDRvEEOFdkQORDM4dFVlFFWqFWSyMjNQJiOiMlIsISQyIkQ9YjQxIiOigkIsUTM7YjNxYTM0IicfJye&Qf35VfikFVVljI0IyQiwiIxYHITp4c7VWaWFGdhRkI0IiTis7W0ICZyBlIsIiNxUTN6ADI8EDMxMjMwIjI0ICdyNkIsIyc59yc5l6YzVWbuoCLwpmLzVXajNXZt9iKs2WauMXdpN6cl5mLqwSbvNmLzVXajNXZt9iKsAnau26YuMXdpN6cl5mLqwSbvNmL6VGZ9RXajVGchJ7ZuoCLuNmLt36YukHdpNWZwFmcn9iKs46bj9Se4l6YlBXYydmLqwicr9ybj9Se4l6YlBXYydmLqwCcq9ybj9Se4l6YlBXYydmLqIiOiMXbEJCLiMVVJN4UF5kI0ISYONkIsUWdyRnOiwmdFJCLiEDO7MTO9IjM8gTM4gDNzIiOiQWSisnOiQkIsISP3EkVxBVUHFDMplzLlVUdGd7cI9UeIt4SshESzV7NvY7ZxlDOuNTb5tzLr',
SJS_LICENSE_KEY:
'E518585142165236#B0wm4nx4QzdlTHRTSOFzcvVnaJdjSnNEeXdTMUtSUzk6bU94QuVXNwZVZjd4SzYjcadXRIVEMzEXTThkVyR7R85UayoHZZBTYQ5mZyh4Shd6VxFXazF4cBNGRG5WTvUGTsV4T6knQYRzKxxUdk9EarplU7d6VLF6KIR7bPJ5N6ZUMWZWaURGRKRDbLJDN5YjSN5mUoxmaxonSD56LEh7Y7RXenpmTvomevZlV9dkaysCO7hTRQFHcGRWQyc5LI9kQmB7QwR4Z7ZHOR3CSXp6SiFWYzFXeXZUSp94K8VDTkFjdwl4KptSYlRWcDxmNE5kS6kzdrkVcNJXROVGbLJkcTNGRzIER8tmd4YGNhh7dxAnMvIHRv46VtBXS4U5KvJ6dZJ6M5p4TxIjd9I5QSpXTTV6SDZXb7lzaL56ZiojITJCLikTQxUTQFV4NiojIIJCLyETO7UzM7kTO0IicfJye&Qf35VfikkR9IkI0IyQiwiIyEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsISNwkTN6ADI8EDMxMjMwIjI0ICdyNkIsIyc59yc5l6YzVWbuoCLwpmLzVXajNXZt9iKs2WauMXdpN6cl5mLqwSbvNmLzVXajNXZt9iKsAnau26YuMXdpN6cl5mLqwSbvNmL6VGZ9RXajVGchJ7ZuoCLuNmLt36YukHdpNWZwFmcn9iKs46bj9Se4l6YlBXYydmLqwicr9ybj9Se4l6YlBXYydmLqwCcq9ybj9Se4l6YlBXYydmLqIiOiMXbEJCLiMVVJN4UF5kI0ISYONkIsUWdyRnOiwmdFJCLiYzMyUjNxIDNxUDO5gTM5IiOiQWSiwSfdtlOicGbmJCLlNHbhZmOiI7ckJye0ICbuFkI1pjIEJCLi4TPRtGOhtWWEFWd4IDOLRVRvx4SyMGcDhTW6n4ep',
},
};
</script>
<script src="/dataviewsjs/demos/static/js/license.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/node_modules/systemjs/dist/system.js" type="text/javascript"></script>
<script src="systemjs.config.js" type="text/javascript"></script>
</head>
<body class="theme-default">
<noscript>You need to enable JavaScript to run this app.</noscript>
<template id="filmDisplay" style="display: none">
<div class="film-container">
<div class="film-cover">
<div data-column="filmCover"></div>
</div>
<div class="film-content">
<div data-column="filmTitleLink"></div>
<div data-column="filmCategory"></div>
<div data-column="filmDescription"></div>
</div>
</div>
</template>
<template id="filmDisplayList" style="display: none">
<div class="film-container">
<div class="film-cover film-cover-list">
<div data-column="filmCover"></div>
</div>
<div class="film-content film-content-list">
<div data-column="filmTitleLink"></div>
<div data-column="filmCategory"></div>
<div data-column="filmDescription"></div>
</div>
</div>
</template>
<app-root></app-root>
<script type="text/javascript">
System.import('./app.ts');
</script>
</body>
</html>
<div class="main-container">
<div class="sample-options">
<div class="btn-group">
<button class="btn btn-default display-button" [class.active]="view === 'list'" (click)="toggle('list')">
<span class="demo-icon icon-th-list"></span>
</button>
<button class="btn btn-default display-button" [class.active]="view === 'card'" (click)="toggle('card')">
<span class="demo-icon icon-th"></span>
</button>
</div>
</div>
<gc-dataview id="grid" class="grid" [data]="data" [cols]="cols" [layout]="layout" [options]="options"></gc-dataview>
</div>
import { Component } from '@angular/core';
import CardLayout from '@grapecity/dataviews.cardlayout';
import { data } from './data';
const filmCoverPresenter = '<img src="{{=it.filmCover.posterUrl}}" alt="{{=it.filmCover.posterTitle}}">';
const filmCoverListPresenter =
'<img src="{{=it.filmCover.posterUrl}}" alt="{{=it.filmCover.posterTitle}}" class="poster-list-resize">';
const filmCategoryPresenter = `<div>
<span class="film-certification"><b>{{=it.filmCategory.certification}}</b></span>
<span class="film-time">{{=it.filmCategory.time}} min - </span>
<span class="film-genre">{{=it.filmCategory.genre}}</span>
</div>`;
const filmCategoryListPresenter = `<span class="film-genre">{{=it.filmCategory.genre}}</span>
<div>
<span class="film-time">{{=it.filmCategory.time}} min </span>
<span class="film-certification"><b>{{=it.filmCategory.certification}}</b></span>
</div>`;
const filmTitleLinkPresenter =
'<a href="{{=it.filmTitleLink.link}}" class="film-title-link"><b>{{=it.filmTitleLink.title}}</b></a>';
const filmDescriptionPresenter = '<div class="film-description">{{=it.filmDescription}}</div>';
const filmDescriptionListPresenter = '<div class="film-description-list">{{=it.filmDescription}}</div>';
export const cols = (asList) => [
{
id: 'filmCover',
dataField: 'filmCover',
presenter: asList ? filmCoverListPresenter : filmCoverPresenter,
},
{
id: 'filmTitleLink',
dataField: 'filmTitleLink',
presenter: filmTitleLinkPresenter,
},
{
id: 'filmCategory',
dataField: 'filmCategory',
presenter: asList ? filmCategoryListPresenter : filmCategoryPresenter,
},
{
id: 'filmDescription',
dataField: 'filmDescription',
presenter: asList ? filmDescriptionListPresenter : filmDescriptionPresenter,
},
];
const cardLayoutOptions = {
cardHeight: 250,
cardWidth: 290,
rowTemplate: '#filmDisplay',
direction: 'horizontal',
};
const listLayoutOptions = {
cardHeight: 125,
cardWidth: 650,
rowTemplate: '#filmDisplayList',
direction: 'horizontal',
};
const layout = new CardLayout(cardLayoutOptions);
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
})
export class AppComponent {
view = 'card';
data = data;
layout = layout;
get cols() {
return cols(this.view === 'list');
}
get options() {
return this.view === 'list' ? listLayoutOptions : cardLayoutOptions;
}
toggle(view) {
this.view = view;
}
}
import { NgModule, enableProdMode } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppComponent } from './app.component';
import { DataViewModule } from '@grapecity/dataviews.angular';
// zone.js should be loaded last to fix error 'ZoneAwarePromise has been overwritten'
import 'zone.js';
@NgModule({
declarations: [AppComponent],
imports: [DataViewModule, BrowserModule, FormsModule],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
if (process.env.NODE_ENV === 'production') {
enableProdMode();
}
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
// films dataset
const SITE_ROOT = window.process.env.SITE_ROOT;
export const data = [
{
filmCover: {
posterUrl: SITE_ROOT + '/images/True_Story.jpg',
posterTitle: 'True Story (2015)',
},
filmTitleLink: {
title: 'True Story (2015)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '100',
genre: 'Drama | Mystery | Thriller',
},
filmDescription:
"The relationship between journalist Michael Finkel and Christian Longo, an FBI Most Wanted List murderer who for years lived outside the U.S. under Finkel's name.",
filmDirector: 'Rupert Goold',
filmActors: ' James Franco, Jonah Hill, Felicity Jones, Ethan Suplee',
filmTimes: '2015',
filmType: 'mystery',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Ex_Machina.jpg',
posterTitle: 'Ex Machina (2015)',
},
filmTitleLink: {
title: 'Ex Machina (2015)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '108',
genre: 'Drama | Sci-Fi',
},
filmDescription:
'A young programmer is selected to participate in a breakthrough experiment in artificial intelligence by evaluating the human qualities of a breathtaking female A.I.',
filmDirector: 'Alex Garland',
filmActors: 'Alicia Vikander, Domhnall Gleeson, Oscar Isaac, Corey Johnson',
filmTimes: '2015',
filmType: 'sci-fi',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Desert_Dancer.jpg',
posterTitle: 'Desert Dancer (2014)',
},
filmTitleLink: {
title: 'Desert Dancer (2014)',
link: '#',
},
filmCategory: {
certification: 'PG-13',
time: '98',
genre: 'Biography | Drama',
},
filmDescription:
"Afshin Ghaffarian risks everything to start a dance company amidst his home country of Iran's politically volatile climate and the nation's ban on dancing.",
filmDirector: 'Richard Raymond',
filmActors: 'Freida Pinto, Nazanin Boniadi, Tom Cullen, Reece Ritchie',
filmTimes: '2014',
filmType: 'biography',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Clouds_of_Sils_Maria.jpg',
posterTitle: 'Clouds of Sils Maria (2014)',
},
filmTitleLink: {
title: 'Clouds of Sils Maria (2014)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '104',
genre: 'Drama',
},
filmDescription:
'A veteran actress comes face-to-face with an uncomfortable reflection of herself when she agrees to take part in a revival of the play that launched her career 20 years earlier.',
filmDirector: 'Olivier Assayas',
filmActors: 'Juliette Binoche, Kristen Stewart, Chloë Grace Moretz, Lars Eidinger',
filmTimes: '2014',
filmType: 'documentary',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Kill_Me_Three_Times.jpg',
posterTitle: 'Kill Me Three Times (2014)',
},
filmTitleLink: {
title: 'Kill Me Three Times (2014)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '90',
genre: 'Action | Thriller',
},
filmDescription:
'Professional hit-man Charlie Wolfe finds himself in three tales of murder, blackmail and revenge after a botched contract assignment.',
filmDirector: 'Kriv Stenders',
filmActors: 'Simon Pegg, Teresa Palmer, Alice Braga, Luke Hemsworth',
filmTimes: '2014',
filmType: 'action',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Self_Less.jpg',
posterTitle: 'Self/less (2015)',
},
filmTitleLink: {
title: 'Self/less (2015)',
link: '#',
},
filmCategory: {
certification: 'PG-13',
time: '120',
genre: 'Drama | Sci-Fi | Thriller',
},
filmDescription:
'An extremely wealthy man, dying from cancer, undergoes a radical medical procedure transferring his consciousness into the body of a healthy young man. But all is not as it seems.',
filmDirector: 'Tarsem Singh',
filmActors: 'Ryan Reynolds, Matthew Goode, Michelle Dockery',
filmTimes: '2015',
filmType: 'sci-fi|thriller',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Unfirended.jpg',
posterTitle: 'Unfriended (2014)',
},
filmTitleLink: {
title: 'Unfriended (2014)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '82',
genre: 'Horror | Thriller',
},
filmDescription:
'A group of online chat room friends find themselves haunted by a mysterious, supernatural force using the account of their dead friend.',
filmDirector: 'Levan Gabriadze',
filmActors: 'Cal Barnes, Matthew Bohrer, Courtney Halverson, Shelley Hennig',
filmTimes: '2014',
filmType: 'horror|thriller',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Paul_Blart_Mall_Cop_2.jpg',
posterTitle: 'Paul Blart: Mall Cop 2 (2015)',
},
filmTitleLink: {
title: 'Paul Blart: Mall Cop 2 (2015)',
link: '#',
},
filmCategory: {
certification: 'PG',
time: '94',
genre: 'Action | Comedy',
},
filmDescription:
'After six years of keeping our malls safe, Paul Blart has earned a well-deserved vacation. Safety never takes a holiday and when duty calls.',
filmDirector: 'Andy Fickman',
filmActors: 'Kevin James, Raini Rodriguez, Eduardo Verástegui, Daniella Alonso',
filmTimes: '2015',
filmType: 'action',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/The_Longest_Ride.jpg',
posterTitle: 'The Longest Ride (2015)',
},
filmTitleLink: {
title: 'The Longest Ride (2015)',
link: '#',
},
filmCategory: {
certification: 'PG-13',
time: '139',
genre: 'Drama | Romance',
},
filmDescription:
"The lives of a young couple intertwine with a much older man as he reflects back on a lost love while he's trapped in an automobile crash.",
filmDirector: 'George Tillman Jr.',
filmActors: 'Scott Eastwood, Britt Robertson, Melissa Benoist, Jack Huston',
filmTimes: '2015',
filmType: 'romance',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Child_44.jpg',
posterTitle: 'Child 44 (2015)',
},
filmTitleLink: {
title: 'Child 44 (2015)',
link: '#',
},
filmCategory: {
certification: 'R',
time: '137',
genre: 'Drama | Thriller',
},
filmDescription:
'A disgraced member of the military police investigates a series of nasty child murders during the Stalin-era Soviet Union.',
filmDirector: 'Daniel Espinosa',
filmActors: 'Tom Hardy, Gary Oldman, Joel Kinnaman, Noomi Rapace',
filmTimes: '2015',
filmType: 'thriller',
},
{
filmCover: {
posterUrl: SITE_ROOT + '/images/Monkey_Kindom.jpg',
posterTitle: 'Monkey Kingdom (2015)',
},
filmTitleLink: {
title: 'Monkey Kingdom (2015)',
link: '#',
},
filmCategory: {
certification: 'G',
time: '78',
genre: 'Documentary',
},
filmDescription:
'A nature documentary that follows a newborn monkey and its mother as they struggle to survive within the competitive social hierarchy of the Temple Troop.',
filmDirector: 'Mark Linfield | Alastair Fothergill',
filmActors: 'Tina Fey',
filmTimes: '2015',
filmType: 'documentary',
},
];
@charset "UTF-8";
@font-face {
font-family: "spreadview-demo-icon";
src: url(data:application/font-woff;base64,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) format("woff");
}
.demo-icon {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-family: "spreadview-demo-icon";
font-style: normal;
font-variant: normal;
text-align: center;
text-transform: none;
}
.icon-th:before {
content: "\e800";
} /* '' */
.icon-th-list:before {
content: "\e801";
} /* '' */
.main-container {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.sample-options {
flex-grow: 0;
flex-shrink: 0;
display: flex;
background: #fbfbfb;
box-sizing: border-box;
overflow: hidden;
padding: 10px;
}
.grid {
width: 100%;
height: calc(100% - 54px);
flex-grow: 1;
flex-shrink: 1;
}
.gc-grid {
border: 0;
}
.film-container {
background: #f1f1f1;
border: solid 1px #e0e0e0;
border-radius: 2px;
margin-right: 1em;
max-height: 210px;
overflow: hidden;
}
.film-cover {
display: inline-block;
margin-right: 1em;
vertical-align: top;
}
.film-content {
display: inline-block;
padding: 0.4em 0;
vertical-align: top;
width: 40%;
}
.film-content-list {
width: 87%;
}
.c1 {
margin-bottom: 0.4em;
}
.c2 {
color: #666;
font-size: 10px;
margin-bottom: 0.4em;
text-transform: uppercase;
}
.film-description {
font-size: 10px;
text-overflow: ellipsis;
}
.film-content-list {
font-size: 10px;
text-overflow: ellipsis;
}
.film-content-list .c2 {
justify-content: space-between;
}
.poster-list-resize {
height: 96px;
width: auto;
}
.film-title-link {
color: #136cb2;
font-size: 13px;
text-decoration: none;
}
.film-title-link:visited {
color: #70579d;
}
.film-title-link:hover {
color: #136cb2;
text-decoration: underline;
}
.film-certification {
background-color: #ddd;
border: 1px solid #aaa;
border-radius: 3px;
display: inline-block;
margin-right: 5px;
}
@media only screen and (max-width: 768px) {
.sample-options {
display: none;
}
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFWaWV3cy9DYXJkL0NhcmRMYXlvdXRFbmdpbmUvYW5ndWxhci9zdHlsZXMuY3NzIiwiRGF0YVZpZXdzL0NhcmQvQ2FyZExheW91dEVuZ2luZS9hbmd1bGFyL3N0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdCQUFnQjtBQ0FoQjtFQUNFLG1DQUFBO0VBQ0EsbTJMQUFBO0FERUY7QUNFQTtFQUNFLGtDQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFQUNBLG1DQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0VBQ0Esb0JBQUE7QURBRjs7QUNHQTtFQUNFLGdCQUFBO0FEQUYsRUNDRSxRQUFBO0FBRUY7RUFDRSxnQkFBQTtBRERGLEVDRUUsUUFBQTtBQUVGO0VBQ0UsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QURGRjs7QUNLQTtFQUNFLFlBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSxnQkFBQTtFQUNBLGFBQUE7QURGRjs7QUNLQTtFQUNFLFdBQUE7RUFDQSx5QkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FERkY7O0FDT0E7RUFDRSxTQUFBO0FESkY7O0FDT0E7RUFDRSxtQkFBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QURKRjs7QUNPQTtFQUNFLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBREpGOztBQ1VBO0VBQ0UscUJBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsVUFBQTtBRFBGOztBQ1VBO0VBQ0UsVUFBQTtBRFBGOztBQ1VBO0VBQ0Usb0JBQUE7QURQRjs7QUNVQTtFQUNFLFdBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RUFDQSx5QkFBQTtBRFBGOztBQ1VBO0VBQ0UsZUFBQTtFQUNBLHVCQUFBO0FEUEY7O0FDVUE7RUFDRSxlQUFBO0VBQ0EsdUJBQUE7QURQRjtBQ1NFO0VBQ0UsOEJBQUE7QURQSjs7QUNhQTtFQUNFLFlBQUE7RUFDQSxXQUFBO0FEVkY7O0FDZUE7RUFDRSxjQUFBO0VBQ0EsZUFBQTtFQUNBLHFCQUFBO0FEWkY7O0FDZUE7RUFDRSxjQUFBO0FEWkY7O0FDZUE7RUFDRSxjQUFBO0VBQ0EsMEJBQUE7QURaRjs7QUNpQkE7RUFDRSxzQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxxQkFBQTtFQUNBLGlCQUFBO0FEZEY7O0FDaUJBO0VBQ0U7SUFDRSxhQUFBO0VEZEY7QUFDRiIsImZpbGUiOiJEYXRhVmlld3MvQ2FyZC9DYXJkTGF5b3V0RW5naW5lL2FuZ3VsYXIvc3R5bGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogXCJzcHJlYWR2aWV3LWRlbW8taWNvblwiO1xuICBzcmM6IHVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUJGY0FBOEFBQUFBSGR3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJIVTFWQ0FBQUJXQUFBQURNQUFBQkNzUDZ6N1U5VEx6SUFBQUdNQUFBQVF3QUFBRlkrSVVreVkyMWhjQUFBQWRBQUFBQjJBQUFCN2dsUDdRMWpkblFnQUFBQ1NBQUFBQk1BQUFBZ0J0WC9BbVp3WjIwQUFBSmNBQUFGa0FBQUMzQ0trWkJaWjJGemNBQUFCK3dBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFIOUFBQUJtWUFBQW9VTHBxeWxHaGxZV1FBQUE1Y0FBQUFNQUFBQURZSm9xZllhR2hsWVFBQURvd0FBQUFkQUFBQUpBYzlBMTFvYlhSNEFBQU9yQUFBQUJnQUFBQXNKNTBBQUd4dlkyRUFBQTdFQUFBQUdBQUFBQmdOTUE5TWJXRjRjQUFBRHR3QUFBQWdBQUFBSUFFaEREWnVZVzFsQUFBTy9BQUFBWGNBQUFMTnpKMGNIbkJ2YzNRQUFCQjBBQUFBYkFBQUFKQzh0OW1oY0hKbGNBQUFFT0FBQUFCNkFBQUFodVZCSzd4NG5HTmdaR0JnNEdLUVk5QmhZSFJ4OHdsaDRHQmdZWUFBa0F4alRtWjZJbEFNeWdQS3NZQnBEaUJtZzRnQ0FJb2pBMDhBZUp4allHU2V4VGlCZ1pXQmdhbUthUThEQTBNUGhHWjh3R0RJeUFRVVpXQmxac0FLQXRKY1V4Z2NYakM4NEdRTytwL0ZFTVVjeERBZEtNd0lrZ01BOGNnTDBRQjRuTzJSMFEzQ1FBeEQzOUZRNkttajhNbEFmREVMbzJhTDFrazlCcEdlcFZpNSs3Q0JPN0NJbHdnWVh3WTFIN21qL1lYWmZ2RHVteWcvdCtPUVVxbzlXbSs2RGYyNDh1REoxdTlXL3JPMy9yek55dTJpa3pSS2p6VFZTSnJLTmsyMWxVWXBrMFo1azBiSmswWWRxS2tMNWdsM1h4dE5BQUI0bkdOZ1FBTVNFTWdjOUQ4VGhBRVNaZ1BiQUhpY3JWWnBkOU5HRkIxNVNaeUVMQ1VMTFdwaHhNUnBzRVltYk1HQUNVR3lZeUJkbksyVm9Jc1VPK20rOFluZjRGL3paTnB6NkRkK1d1OGJMeVNRdE9kd21wT2pkK2ZOMWN6YlpSSmFrdGdMNjVHVW15L0YxTlltamV3OENlbUdUY3RSZkNnN2V5Rmxpc25mQlZFUXJaYmF0eDJIUkVRaVVMV3VzRVFRK3g1Wm1tUjg2RkZHeTdha1YwM0tMVDNwTGx2alFiMVYzMzRhT3NxeE82R2taak4wYUQyeUpWVVlWYUpJcGoxUzBxWmxxUG9yU1N1OHY4TE1WODFRd29oT0ltbThHY2JRU040Ylo3VEthRFcyNHlpS2JMTGNLRklrbXVGQkZIbVUxUkxuNUlvSkRNb0h6WkR5eXFjUjVjUDhpS3pZbzV4V3NFdTIwL3krTDNtbmR6ay9zVjl2VWJia1FCL0lqdXpnN0hRbFg0UmJXMkhjdEpQdEtGUVJkdGQzUW16WjdGVC9aby95bWtZRHR5c3l2ZENNWUtsOGhSQXJQNkhNL2lGWkxaeFArWkpIbzFxeWtSTkI2MlZPN0VzK2dkYmppQ2x4elJoWjBOM1JDUkhVL1pJekRQYVlQaDc4OGQ0cGxnc1RBbmdjeTNwSEpad0lFeWxoY3pSSjJqQnlZQ1ZsaXlxcDlhNllPT1YxV3NSYnduN3QydEdYem1qalVIZGlQRnNQSFZzNVVjbnhhRktubVV5ZDJrbk5veWtOb3BSMEpuak1yd01vUDZKSlhtMWpOWW1WUjlNNFpzYUVSQ0lDTGR4TFUwRXNPN0drS1FUTm94bTl1UnVtdVhZdFdxVEpBL1hjby9mMDVsYTR1ZE5UMmc3MHMwWi9WcWRpT3RnTDArbHA1Qy94YWRybElrWHArdWtaZmt6aVFkWUNNcEV0TnNPVWd3ZHYvUTdTeTllV0hJWFhCdGp1N2ZNcnFIM1dSUENrQWZzYjBCNVAxU2tKVElXWVZZaFdRR0t0YTFtV3lkV3NGcW5JMUhkRG1sYStyTk1FaW5JY0Y4ZStqSEg5WHpNemxwZ1N2dCtKMDdNakxqMXo3VXNJMHh4OG0zVTltdGVweFhJQmNXWjVUcWRabHUvck5NZnlBNTNtV1o3WDZRaExXNmVqTEQvVWFZSGxSem9kWTNsQkM1cDAzOEdRaXpEa0FnNlFNSVNsQTBOWVhvSWhMQlVNWWJrSVExZ1dZUWpMSlJqQzhtTVl3bklaaHJDOHJHWFYxRk5KNDlxWldBWnNRbUJpamg2NXpFWGxhaXE1VkVLN2FGUnFRNTRTYnBWVUZNK3FmMldnWGp6eWhqbXdGa2lYeUpwZk1jNlZqMGJsK05ZVkxXOGFPMWZBc2Vwdkg0NzJPZkZTMW91RlB3WC8xZFpVSmIxaXpjT1RxL0FiaHA1c0o2bzJxWGgwVFpmUFZUMjYvbDlVVkZnTDlCdEloVmdveXJKc2NHY2loSTg2bllacW9KVkR6R3pNUExUcmRjdWFuOFA5TnpGQ0ZsRDkrRGNVR2d2Y2cwNVpTVm50NEt6VjE5dXkzRHVEY2pnVExFa3hOL1A2VnZnaUk3UFNmcEZaeXA2UGZCNXdCWXhLWmRocUE2MFZ2TmtuTVErWjNpVFBCSEZiVVRaSTJ0ak9CSWtOSFBPQWVmT2RCQ1poNnFvTjVFN2hoZzM0QldGdXdYa25YS0o2b3l5SDdrWHM4eWlrL0Z1bjRrVDJxR2lNd0xQWkcyR3Y3MExLYjNFTUpEVDVwWDRNVkJXaHFSZzFGZEEwVW02b0JsL0cyYnB0UXNZTzlDTXFkc095ck9MRHh4YjNsWkp0R1lSOHBJalZvNk9mMWw2aVRxcmNmbVlVbCsrZHZnWEJJRFV4ZjN2ZmRIR1F5cnRheVRKSGJRTlR0eHFWVTllYVErTlZoK3JtVWZXOTQrd1RPV3VhYnJvbkhucGYwNnJid2NWY0xMRDJiUTdTVWlZWDFQVmhoUTJpeThXbFVPcGxORW52dUFjWUZoalE3MUNLamYrcit0aDhuaXRWaGRGeEpOOU8xTGZSNTJBTS9BL1lmMGYxQTlEM1kraHlEUzdQOTVvVG4yNzA0V3lacnFJWDY2Zm9OekJycmJsWnVnYmMwSFFENGlGSHJZNjR5ZzE4cHdaeGVxUzVIT2toNEdQZEZlSUJ3Q2FBeGVBVDNiV001bE1Bby9tTU9UN0E1OHhoMEdRT2d5M21NTmhtemhyQURuTVk3REtId1I1ekdIekJuSFdBTDVuRElHUU9nNGc1REo0d0p3QjR5aHdHWHpHSHdkZk1ZZkFOYys0RGZNc2NCakZ6R0NUTVliQ3Y2ZFl3ekMxZTBGMmd0a0ZWb0FOVFQxamN3K0pRVTJYSS9vNFhodjI5UWN6K3dTQ20vcWpwOXBENkV5OE05V2VEbVBxTFFVejlWZE9kSWZVM1hoanE3d1l4OVErRG1QcE12eGpMWlFhL2pIeVhDZ2VVWFd3KzUrK0o5dy9ieFVDNUFBRUFBZi8vQUE5NG5LVlZXVzhiMXhVKzU5N1pPQnl1bW9XeXlERTNjV3hTa0Z5dWlxeFNsQmZRa3VrRnRwRFFTYVRRanF5MmtHM0pEZUNnNlBhZ3dMWFJKZ0t5RktoYkJBaXN4d2F0K3RLWEFIMW9uN29BYlg1Q0h3SVpSWkduUHJTSXhqMlhZaFU3aWJxZ1E4Njk1N3Zuek15NTV6dm5YQWdBUFA0NzMrRkJpTUJobUlBWnVBQXZ3UnA4RnpiaFFxc1RDekUxYWpDRnEwb3ZFbUE4ckRHR25QV0NNa01BWEJBelFsZVhHQ0IwM3ZqKzNZM3ZmUFBPSzdkV1YxNWVldUhaeStmUDFnWlhKUzZuU3FPV3FhaTViTUdyVmV0T3BXekhDSHNEM0NDTW45RUxYTUk5ZkJ6MzhCZlpmeG4vdmIzUUMvdWhnVjdndnQ1TjI3OXdYS1RSVGo4aDR2Vjk0TGorVHc3UzRNcW5EejVoOWJUaWlaYy91R0VUdEc3UWExeFVWc1hrckFvTC93OVBhRmgrVmRpTHdmLzkvMnFFMnY0NkFDaGZ5TzEwNjVrZ3FqcjJPUTBnMTdEUHFJeDlRbWtpUGlVVWRINkdRdU8vcFRBejBHY09vR1NnYjJUMktNa05jQ1Z6TUNYc3QybDc5MUVmTWNkeGR4c0g2L0FwOVA4Ri9lbDRVb0FlMytOWDJGOGhCZmxXQmhobmE3U0k2OEFCK0FKd0RsMFNvRk53N0p3a0owclkzNTFqbXhGVXNoNFdxZzJzbHcrandMUlhmaVdmOGwvZHNxeWlkZHp5M3paTnZHRk4yVVhMMnNMN3FUd3V0ZDNpbGpsdGxnWUtYQldXVS9iV0VkajNwVWErdUgxZk9PTnJZblVkcUNEWkFsQ1pkb0dZN2RpakJiUHZpNm1TRXhQa3hBeG1CaldUOFFTcWx4MjBlYzMwMzdHbnJLSnRQL1JmVGVYektiei8wTGFML1ErYk9PV2F3c09pTlcwOUxMcmtHVzVaMHdRdC94Mno3OHYzS005cU1BUmVLNjlUQm1FN2dIQTZTTTZjSXE4UUZvVExYUkdzVHI3QVpMdGtWWnR5cFJiQVdEWXNIenR6cC9mMnhaUDRpdi82eXJVSDg5ZktZOS9ZL1BPYksrVkQwdC84SC9pdm84SGkyVlBYZnRqL3p0ZjREdnMxRkNEWkdoNmh0MkU3aEhCS3ZKZDJEeXY1Ykk3SkZ1MDFqTG1zcDZqMG85UXExQXUweXhsc3Noa2NSNi9hWkpXeWkzem43a2Yzdk9LdHQwYnllcGd6aVhGRENwbXFHVlVqM1dXOCtOb0h5L2MrdW90TFY3ZDYwdFdDSnFHaEk5TWtIcEhEdHBaTURoWExieTdNdmRhYjdHMEo5aDl2OCtmNUpkQ2dDYmZnWEd0K2JyYkJ1WXh0a0NsSlpINFRkQUNtUTQ4c21LeXhKWHBHbGJqYUF3a1VTWG1STmhMb1FpQmc0TnpOMVpYbDBVb3pXZi9TWWFzVXBKSnJWTWRSTWUwbVlyWGc1YXAxajZZd1U1VUloaG5kNk9WaXRCM0pzYW0rYWxXdmlWV3ZYaU9iSmpaTTFiYjI3a0VWRnNSWWk0bGFyRGZxalNacjFFVW95SUJxZDlOTzJ2Um5HMlBKMzlReDJ3aUhUU2ZraG9MaGhHNGJwaDZQcTNZNGFTVFpuYm1UcXl4cTZpazlFRSswUjJRTE03M3paK3BmUFQxcnZKY3FGbE0vTXA5SkowT0duYkNURS9OSFJxNU5QYnNjTVZuaVVJS1plREZWeFBUWDA0MHFSazdNSjBLRldEaWFEZ3pwQnZvL1pvcWlLZXpvWWlRYUtCNkpKNzFRWHNPeVZUNGFOMHNGdzVnc25YLytrT01VVTNqZExZYm1pbTc0Uk1lMjh1ZG5LNU1pdHlpT2dvTno3REYxUFJPR0lROTNXMVRCVEU3WllZbzBHNllDQVM2YW05USsrL1A0eFc3TEkyN2t0YjBpSnRWYVAwOWZWaEFsQ1MvUmhOSnpJS0YwZHFSVitMd2xySDNlOEVvckRwQkpKNXhvSktDUkc0cXBVaTQ2RFUrMUtoWldjMWtxUU11c2xLa0plQTdtYWtodHdHdjBHOEx2eWh1Vk0vaVNJVXYrbjZTUUxPRUVkM2Y4WXp2OG5MbTRzMmdldHplSW9ZM0tkSnNwaHVSL0tOR0k0OUx0SFgvaUVUNUlXWXVQWHJTc0RSc0dQWCtieC9kNy9uRTRDVitCNWRiVjUwNHpSVHVhR1k0RlVLSEcwSlk1STBGQnVDa3hCcW9DNmlxRUlhQ0ZBNzFJaUdtR3poVFVsQ1ZRZzBGMUFWUTEySVdnR3V4Y1g3NjY5TUtWeTVjdWRPYmFzek5tM2l5SUt4ZWxSTVhZWHBidDVWZlpkdjRESG9wbFlxYUwxUFlwdHlzZUpiZENBUk0yc2NHaEVNdjk2N0J1VURaVGloNUdjY2E0dXBiWDlQNncrYW40aHE3dWlhcCt4amMwamVFZm1hYjU5Lzh4SXNuYmlvUi8wYlY2ZGRRL05sckZtckQ3cVJjWW8rTmpUUFBlMTNUOHBmOHJzWWl6WWp4QTlwZFpiUGRqS2dYZFpOZG42YVNVTDlNWGR6OGVQM1ZpbkEzMW5WaTBrdWlhaTNxZmgzZjVKaytKU29jZ1JDa25YWmh2dFVVWDR3aWlBMUJqb0U0Z2c2VEkwcEp1YUZ4UlZXV2hMeWhxTnhpZ0lsYzc4WmliU283WVZtdzRQaHlMeDhRVkRjbkpFbVpxbWYyN1dqYXpvMlU3ak9PczdnakFOei9aNE4vMnQzYy9aT040UWNpZmJLeXZZOExPTXZkWW11VS9XRjluNzYvNzIrdit6OWI4YjAzZXZwMGR5Mk4yUE4yWXZBMy9CTGswcHR3QUFIaWNZMkJrWUdBQTRnYzNFcWJIODl0OFplQm1mZ0VVWWJqc3Uwa0dRZi9QWkg3QkhBVGtjakF3Z1VRQllXNEwxWGljWTJCa1lHQU8rcDhGSkY4d01Qei9EeVNCSWlpQUd3Q0gxQVdnQUFBQWVKeGpmc0hBd0F6RGtWQ016aGNFNGdVTURBQ3k1d2EvQUFBQUFBRHVBWllCM0FJaUFsWUNvZ05rQStnRXJBVUtBQUVBQUFBTEFKQUFDUUFBQUFBQUFnQWtBRFFBY3dBQUFIVUxjQUFBQUFCNG5IV1F5MDdDUUJTRy81R0xDb2thVGR3Nkt3TXhsa3NpQ3hJU0VneHNkRU1NVzFOS2FVdEtoMHdIRWw3RGQvQmhmQW1meFo5Mk1BWmltK2w4NTVzelowNEh3RFcrSVpBL1R4dzVDNXd4eXZrRXAraFpMdEEvV3k2U1h5eVhVTVdiNVRMOXUrVUtIaEJZcnVJR0g2d2dpdWVNRnZpMExIQWxMaTJmNEVMY1dTN1FQMW91a251V1M3Z1ZyNWJMOUo3bENpWWl0VnpGdmZnYXFOVldSMEZvWkcxUWwrMW1xeU9uVzZtb29zU05wYnMyb2RLcDdNdTVTb3dmeDhyeDFITFBZejlZeDY3ZWgvdDU0dXMwVW9sc09jMjlHdm1KcjEzanozYlYwMDNRTm1ZdTUxb3Q1ZEJteUpWV0M5OHpUbWpNcXR0by9EMFBBeWlzc0lWR3hLc0tZU0JSbzYxemJxT0pGanFrS1RNa00vT3NDQWxjeERRdTF0d1JaaXNwNHo3SG5GRkM2ek1qSmp2dytGMGUrVEVwNFA2WVZmVFI2bUU4SWUzT2lESXYyWmZEN2c2elJxUWt5M1F6Ty92dFBjV0dwN1ZwRFhmdHV0UlpWeExEZ3hxUzk3RmJXOUI0OUU1Mks0YTJpd2JmZi83dkIrTnBoRThBZUp4dHhrRU9neUFRQmRENXRJcElyOEtoa0l3T0NWZ0M0NkszYjlKdWZhdEhodjVXdXVkaDhNQVRFMlpZTEhCWTRmRWlvMkpWUXNsRGw4SzdoaTBmcnVkRGZwdUd4TTQydld2bFU1M0tWYmNScmpZM1BsTXVYbnNjRXJnMi9mallOYWZDSVJZbCtnSmZwQjdaZUp4ajhON0JjQ0lvWWlNalkxL2tCc2FkSEF3Y0RNa0ZHeGxZblRZeE1ESm9nUmlidVpnWU9TQXNQZ1l3aTgxcEY5TUJvRFFua00zdXRJdkJBY0ptWm5EWnFNTFlFUml4d2FFallpTnppc3RHTlJCdkYwY0RBeU9MUTBkeVNBUklTU1FRYk9aaFl1VFIyc0g0djNVRFMrOUdKZ1lYQUF4MkkvUUFBQT09KSBmb3JtYXQoXCJ3b2ZmXCIpO1xufVxuLmRlbW8taWNvbiB7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBcInNwcmVhZHZpZXctZGVtby1pY29uXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi5pY29uLXRoOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlODAwXCI7XG59IC8qICfuoIAnICovXG4uaWNvbi10aC1saXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiXFxlODAxXCI7XG59IC8qICfuoIEnICovXG4ubWFpbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2FtcGxlLW9wdGlvbnMge1xuICBmbGV4LWdyb3c6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBiYWNrZ3JvdW5kOiAjZmJmYmZiO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uZ3JpZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDU0cHgpO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZsZXgtc2hyaW5rOiAxO1xufVxuXG4uZ2MtZ3JpZCB7XG4gIGJvcmRlcjogMDtcbn1cblxuLmZpbG0tY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogI2YxZjFmMTtcbiAgYm9yZGVyOiBzb2xpZCAxcHggI2UwZTBlMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgbWF4LWhlaWdodDogMjEwcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5maWxtLWNvdmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDFlbTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLmZpbG0tY29udGVudCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC40ZW0gMDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgd2lkdGg6IDQwJTtcbn1cblxuLmZpbG0tY29udGVudC1saXN0IHtcbiAgd2lkdGg6IDg3JTtcbn1cblxuLmMxIHtcbiAgbWFyZ2luLWJvdHRvbTogMC40ZW07XG59XG5cbi5jMiB7XG4gIGNvbG9yOiAjNjY2O1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNGVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uZmlsbS1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5maWxtLWNvbnRlbnQtbGlzdCB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4uZmlsbS1jb250ZW50LWxpc3QgLmMyIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4ucG9zdGVyLWxpc3QtcmVzaXplIHtcbiAgaGVpZ2h0OiA5NnB4O1xuICB3aWR0aDogYXV0bztcbn1cblxuLmZpbG0tdGl0bGUtbGluayB7XG4gIGNvbG9yOiAjMTM2Y2IyO1xuICBmb250LXNpemU6IDEzcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmZpbG0tdGl0bGUtbGluazp2aXNpdGVkIHtcbiAgY29sb3I6ICM3MDU3OWQ7XG59XG5cbi5maWxtLXRpdGxlLWxpbms6aG92ZXIge1xuICBjb2xvcjogIzEzNmNiMjtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5maWxtLWNlcnRpZmljYXRpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnNhbXBsZS1vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59IiwiQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnc3ByZWFkdmlldy1kZW1vLWljb24nO1xuICBzcmM6IHVybChkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUJGY0FBOEFBQUFBSGR3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJIVTFWQ0FBQUJXQUFBQURNQUFBQkNzUDZ6N1U5VEx6SUFBQUdNQUFBQVF3QUFBRlkrSVVreVkyMWhjQUFBQWRBQUFBQjJBQUFCN2dsUDdRMWpkblFnQUFBQ1NBQUFBQk1BQUFBZ0J0WC9BbVp3WjIwQUFBSmNBQUFGa0FBQUMzQ0trWkJaWjJGemNBQUFCK3dBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFIOUFBQUJtWUFBQW9VTHBxeWxHaGxZV1FBQUE1Y0FBQUFNQUFBQURZSm9xZllhR2hsWVFBQURvd0FBQUFkQUFBQUpBYzlBMTFvYlhSNEFBQU9yQUFBQUJnQUFBQXNKNTBBQUd4dlkyRUFBQTdFQUFBQUdBQUFBQmdOTUE5TWJXRjRjQUFBRHR3QUFBQWdBQUFBSUFFaEREWnVZVzFsQUFBTy9BQUFBWGNBQUFMTnpKMGNIbkJ2YzNRQUFCQjBBQUFBYkFBQUFKQzh0OW1oY0hKbGNBQUFFT0FBQUFCNkFBQUFodVZCSzd4NG5HTmdaR0JnNEdLUVk5QmhZSFJ4OHdsaDRHQmdZWUFBa0F4alRtWjZJbEFNeWdQS3NZQnBEaUJtZzRnQ0FJb2pBMDhBZUp4allHU2V4VGlCZ1pXQmdhbUthUThEQTBNUGhHWjh3R0RJeUFRVVpXQmxac0FLQXRKY1V4Z2NYakM4NEdRTytwL0ZFTVVjeERBZEtNd0lrZ01BOGNnTDBRQjRuTzJSMFEzQ1FBeEQzOUZRNkttajhNbEFmREVMbzJhTDFrazlCcEdlcFZpNSs3Q0JPN0NJbHdnWVh3WTFIN21qL1lYWmZ2RHVteWcvdCtPUVVxbzlXbSs2RGYyNDh1REoxdTlXL3JPMy9yek55dTJpa3pSS2p6VFZTSnJLTmsyMWxVWXBrMFo1azBiSmswWWRxS2tMNWdsM1h4dE5BQUI0bkdOZ1FBTVNFTWdjOUQ4VGhBRVNaZ1BiQUhpY3JWWnBkOU5HRkIxNVNaeUVMQ1VMTFdwaHhNUnBzRVltYk1HQUNVR3lZeUJkbksyVm9Jc1VPK20rOFluZjRGL3paTnB6NkRkK1d1OGJMeVNRdE9kd21wT2pkK2ZOMWN6YlpSSmFrdGdMNjVHVW15L0YxTlltamV3OENlbUdUY3RSZkNnN2V5Rmxpc25mQlZFUXJaYmF0eDJIUkVRaVVMV3VzRVFRK3g1Wm1tUjg2RkZHeTdha1YwM0tMVDNwTGx2alFiMVYzMzRhT3NxeE82R2taak4wYUQyeUpWVVlWYUpJcGoxUzBxWmxxUG9yU1N1OHY4TE1WODFRd29oT0ltbThHY2JRU040Ylo3VEthRFcyNHlpS2JMTGNLRklrbXVGQkZIbVUxUkxuNUlvSkRNb0h6WkR5eXFjUjVjUDhpS3pZbzV4V3NFdTIwL3krTDNtbmR6ay9zVjl2VWJia1FCL0lqdXpnN0hRbFg0UmJXMkhjdEpQdEtGUVJkdGQzUW16WjdGVC9aby95bWtZRHR5c3l2ZENNWUtsOGhSQXJQNkhNL2lGWkxaeFArWkpIbzFxeWtSTkI2MlZPN0VzK2dkYmppQ2x4elJoWjBOM1JDUkhVL1pJekRQYVlQaDc4OGQ0cGxnc1RBbmdjeTNwSEpad0lFeWxoY3pSSjJqQnlZQ1ZsaXlxcDlhNllPT1YxV3NSYnduN3QydEdYem1qalVIZGlQRnNQSFZzNVVjbnhhRktubVV5ZDJrbk5veWtOb3BSMEpuak1yd01vUDZKSlhtMWpOWW1WUjlNNFpzYUVSQ0lDTGR4TFUwRXNPN0drS1FUTm94bTl1UnVtdVhZdFdxVEpBL1hjby9mMDVsYTR1ZE5UMmc3MHMwWi9WcWRpT3RnTDArbHA1Qy94YWRybElrWHArdWtaZmt6aVFkWUNNcEV0TnNPVWd3ZHYvUTdTeTllV0hJWFhCdGp1N2ZNcnFIM1dSUENrQWZzYjBCNVAxU2tKVElXWVZZaFdRR0t0YTFtV3lkV3NGcW5JMUhkRG1sYStyTk1FaW5JY0Y4ZStqSEg5WHpNemxwZ1N2dCtKMDdNakxqMXo3VXNJMHh4OG0zVTltdGVweFhJQmNXWjVUcWRabHUvck5NZnlBNTNtV1o3WDZRaExXNmVqTEQvVWFZSGxSem9kWTNsQkM1cDAzOEdRaXpEa0FnNlFNSVNsQTBOWVhvSWhMQlVNWWJrSVExZ1dZUWpMSlJqQzhtTVl3bklaaHJDOHJHWFYxRk5KNDlxWldBWnNRbUJpamg2NXpFWGxhaXE1VkVLN2FGUnFRNTRTYnBWVUZNK3FmMldnWGp6eWhqbXdGa2lYeUpwZk1jNlZqMGJsK05ZVkxXOGFPMWZBc2Vwdkg0NzJPZkZTMW91RlB3WC8xZFpVSmIxaXpjT1RxL0FiaHA1c0o2bzJxWGgwVFpmUFZUMjYvbDlVVkZnTDlCdEloVmdveXJKc2NHY2loSTg2bllacW9KVkR6R3pNUExUcmRjdWFuOFA5TnpGQ0ZsRDkrRGNVR2d2Y2cwNVpTVm50NEt6VjE5dXkzRHVEY2pnVExFa3hOL1A2VnZnaUk3UFNmcEZaeXA2UGZCNXdCWXhLWmRocUE2MFZ2TmtuTVErWjNpVFBCSEZiVVRaSTJ0ak9CSWtOSFBPQWVmT2RCQ1poNnFvTjVFN2hoZzM0QldGdXdYa25YS0o2b3l5SDdrWHM4eWlrL0Z1bjRrVDJxR2lNd0xQWkcyR3Y3MExLYjNFTUpEVDVwWDRNVkJXaHFSZzFGZEEwVW02b0JsL0cyYnB0UXNZTzlDTXFkc095ck9MRHh4YjNsWkp0R1lSOHBJalZvNk9mMWw2aVRxcmNmbVlVbCsrZHZnWEJJRFV4ZjN2ZmRIR1F5cnRheVRKSGJRTlR0eHFWVTllYVErTlZoK3JtVWZXOTQrd1RPV3VhYnJvbkhucGYwNnJid2NWY0xMRDJiUTdTVWlZWDFQVmhoUTJpeThXbFVPcGxORW52dUFjWUZoalE3MUNLamYrcit0aDhuaXRWaGRGeEpOOU8xTGZSNTJBTS9BL1lmMGYxQTlEM1kraHlEUzdQOTVvVG4yNzA0V3lacnFJWDY2Zm9OekJycmJsWnVnYmMwSFFENGlGSHJZNjR5ZzE4cHdaeGVxUzVIT2toNEdQZEZlSUJ3Q2FBeGVBVDNiV001bE1Bby9tTU9UN0E1OHhoMEdRT2d5M21NTmhtemhyQURuTVk3REtId1I1ekdIekJuSFdBTDVuRElHUU9nNGc1REo0d0p3QjR5aHdHWHpHSHdkZk1ZZkFOYys0RGZNc2NCakZ6R0NUTVliQ3Y2ZFl3ekMxZTBGMmd0a0ZWb0FOVFQxamN3K0pRVTJYSS9vNFhodjI5UWN6K3dTQ20vcWpwOXBENkV5OE05V2VEbVBxTFFVejlWZE9kSWZVM1hoanE3d1l4OVErRG1QcE12eGpMWlFhL2pIeVhDZ2VVWFd3KzUrK0o5dy9ieFVDNUFBRUFBZi8vQUE5NG5LVlZXVzhiMXhVKzU5N1pPQnl1bW9XeXlERTNjV3hTa0Z5dWlxeFNsQmZRa3VrRnRwRFFTYVRRanF5MmtHM0pEZUNnNlBhZ3dMWFJKZ0t5RktoYkJBaXN4d2F0K3RLWEFIMW9uN29BYlg1Q0h3SVpSWkduUHJTSXhqMlhZaFU3aWJxZ1E4Njk1N3Zuek15NTV6dm5YQWdBUFA0NzMrRkJpTUJobUlBWnVBQXZ3UnA4RnpiaFFxc1RDekUxYWpDRnEwb3ZFbUE4ckRHR25QV0NNa01BWEJBelFsZVhHQ0IwM3ZqKzNZM3ZmUFBPSzdkV1YxNWVldUhaeStmUDFnWlhKUzZuU3FPV3FhaTViTUdyVmV0T3BXekhDSHNEM0NDTW45RUxYTUk5ZkJ6MzhCZlpmeG4vdmIzUUMvdWhnVjdndnQ1TjI3OXdYS1RSVGo4aDR2Vjk0TGorVHc3UzRNcW5EejVoOWJUaWlaYy91R0VUdEc3UWExeFVWc1hrckFvTC93OVBhRmgrVmRpTHdmLzkvMnFFMnY0NkFDaGZ5TzEwNjVrZ3FqcjJPUTBnMTdEUHFJeDlRbWtpUGlVVWRINkdRdU8vcFRBejBHY09vR1NnYjJUMktNa05jQ1Z6TUNYc3QybDc5MUVmTWNkeGR4c0g2L0FwOVA4Ri9lbDRVb0FlMytOWDJGOGhCZmxXQmhobmE3U0k2OEFCK0FKd0RsMFNvRk53N0p3a0owclkzNTFqbXhGVXNoNFdxZzJzbHcrandMUlhmaVdmOGwvZHNxeWlkZHp5M3paTnZHRk4yVVhMMnNMN3FUd3V0ZDNpbGpsdGxnWUtYQldXVS9iV0VkajNwVWErdUgxZk9PTnJZblVkcUNEWkFsQ1pkb0dZN2RpakJiUHZpNm1TRXhQa3hBeG1CaldUOFFTcWx4MjBlYzMwMzdHbnJLSnRQL1JmVGVYektiei8wTGFML1ErYk9PV2F3c09pTlcwOUxMcmtHVzVaMHdRdC94Mno3OHYzS005cU1BUmVLNjlUQm1FN2dIQTZTTTZjSXE4UUZvVExYUkdzVHI3QVpMdGtWWnR5cFJiQVdEWXNIenR6cC9mMnhaUDRpdi82eXJVSDg5ZktZOS9ZL1BPYksrVkQwdC84SC9pdm84SGkyVlBYZnRqL3p0ZjREdnMxRkNEWkdoNmh0MkU3aEhCS3ZKZDJEeXY1Ykk3SkZ1MDFqTG1zcDZqMG85UXExQXUweXhsc3Noa2NSNi9hWkpXeWkzem43a2Yzdk9LdHQwYnllcGd6aVhGRENwbXFHVlVqM1dXOCtOb0h5L2MrdW90TFY3ZDYwdFdDSnFHaEk5TWtIcEhEdHBaTURoWExieTdNdmRhYjdHMEo5aDl2OCtmNUpkQ2dDYmZnWEd0K2JyYkJ1WXh0a0NsSlpINFRkQUNtUTQ4c21LeXhKWHBHbGJqYUF3a1VTWG1STmhMb1FpQmc0TnpOMVpYbDBVb3pXZi9TWWFzVXBKSnJWTWRSTWUwbVlyWGc1YXAxajZZd1U1VUloaG5kNk9WaXRCM0pzYW0rYWxXdmlWV3ZYaU9iSmpaTTFiYjI3a0VWRnNSWWk0bGFyRGZxalNacjFFVW95SUJxZDlOTzJ2Um5HMlBKMzlReDJ3aUhUU2ZraG9MaGhHNGJwaDZQcTNZNGFTVFpuYm1UcXl4cTZpazlFRSswUjJRTE03M3paK3BmUFQxcnZKY3FGbE0vTXA5SkowT0duYkNURS9OSFJxNU5QYnNjTVZuaVVJS1plREZWeFBUWDA0MHFSazdNSjBLRldEaWFEZ3pwQnZvL1pvcWlLZXpvWWlRYUtCNkpKNzFRWHNPeVZUNGFOMHNGdzVnc25YLytrT01VVTNqZExZYm1pbTc0Uk1lMjh1ZG5LNU1pdHlpT2dvTno3REYxUFJPR0lROTNXMVRCVEU3WllZbzBHNllDQVM2YW05USsrL1A0eFc3TEkyN2t0YjBpSnRWYVAwOWZWaEFsQ1MvUmhOSnpJS0YwZHFSVitMd2xySDNlOEVvckRwQkpKNXhvSktDUkc0cXBVaTQ2RFUrMUtoWldjMWtxUU11c2xLa0plQTdtYWtodHdHdjBHOEx2eWh1Vk0vaVNJVXYrbjZTUUxPRUVkM2Y4WXp2OG5MbTRzMmdldHplSW9ZM0tkSnNwaHVSL0tOR0k0OUx0SFgvaUVUNUlXWXVQWHJTc0RSc0dQWCtieC9kNy9uRTRDVitCNWRiVjUwNHpSVHVhR1k0RlVLSEcwSlk1STBGQnVDa3hCcW9DNmlxRUlhQ0ZBNzFJaUdtR3poVFVsQ1ZRZzBGMUFWUTEySVdnR3V4Y1g3NjY5TUtWeTVjdWRPYmFzek5tM2l5SUt4ZWxSTVhZWHBidDVWZlpkdjRESG9wbFlxYUwxUFlwdHlzZUpiZENBUk0yc2NHaEVNdjk2N0J1VURaVGloNUdjY2E0dXBiWDlQNncrYW40aHE3dWlhcCt4amMwamVFZm1hYjU5Lzh4SXNuYmlvUi8wYlY2ZGRRL05sckZtckQ3cVJjWW8rTmpUUFBlMTNUOHBmOHJzWWl6WWp4QTlwZFpiUGRqS2dYZFpOZG42YVNVTDlNWGR6OGVQM1ZpbkEzMW5WaTBrdWlhaTNxZmgzZjVKaytKU29jZ1JDa25YWmh2dFVVWDR3aWlBMUJqb0U0Z2c2VEkwcEp1YUZ4UlZXV2hMeWhxTnhpZ0lsYzc4WmliU283WVZtdzRQaHlMeDhRVkRjbkpFbVpxbWYyN1dqYXpvMlU3ak9PczdnakFOei9aNE4vMnQzYy9aT040UWNpZmJLeXZZOExPTXZkWW11VS9XRjluNzYvNzIrdit6OWI4YjAzZXZwMGR5Mk4yUE4yWXZBMy9CTGswcHR3QUFIaWNZMkJrWUdBQTRnYzNFcWJIODl0OFplQm1mZ0VVWWJqc3Uwa0dRZi9QWkg3QkhBVGtjakF3Z1VRQllXNEwxWGljWTJCa1lHQU8rcDhGSkY4d01Qei9EeVNCSWlpQUd3Q0gxQVdnQUFBQWVKeGpmc0hBd0F6RGtWQ016aGNFNGdVTURBQ3k1d2EvQUFBQUFBRHVBWllCM0FJaUFsWUNvZ05rQStnRXJBVUtBQUVBQUFBTEFKQUFDUUFBQUFBQUFnQWtBRFFBY3dBQUFIVUxjQUFBQUFCNG5IV1F5MDdDUUJTRy81R0xDb2thVGR3Nkt3TXhsa3NpQ3hJU0VneHNkRU1NVzFOS2FVdEtoMHdIRWw3RGQvQmhmQW1meFo5Mk1BWmltK2w4NTVzelowNEh3RFcrSVpBL1R4dzVDNXd4eXZrRXAraFpMdEEvV3k2U1h5eVhVTVdiNVRMOXUrVUtIaEJZcnVJR0g2d2dpdWVNRnZpMExIQWxMaTJmNEVMY1dTN1FQMW91a251V1M3Z1ZyNWJMOUo3bENpWWl0VnpGdmZnYXFOVldSMEZvWkcxUWwrMW1xeU9uVzZtb29zU05wYnMyb2RLcDdNdTVTb3dmeDhyeDFITFBZejlZeDY3ZWgvdDU0dXMwVW9sc09jMjlHdm1KcjEzanozYlYwMDNRTm1ZdTUxb3Q1ZEJteUpWV0M5OHpUbWpNcXR0by9EMFBBeWlzc0lWR3hLc0tZU0JSbzYxemJxT0pGanFrS1RNa00vT3NDQWxjeERRdTF0d1JaaXNwNHo3SG5GRkM2ek1qSmp2dytGMGUrVEVwNFA2WVZmVFI2bUU4SWUzT2lESXYyWmZEN2c2elJxUWt5M1F6Ty92dFBjV0dwN1ZwRFhmdHV0UlpWeExEZ3hxUzk3RmJXOUI0OUU1Mks0YTJpd2JmZi83dkIrTnBoRThBZUp4dHhrRU9neUFRQmRENXRJcElyOEtoa0l3T0NWZ0M0NkszYjlKdWZhdEhodjVXdXVkaDhNQVRFMlpZTEhCWTRmRWlvMkpWUXNsRGw4SzdoaTBmcnVkRGZwdUd4TTQydld2bFU1M0tWYmNScmpZM1BsTXVYbnNjRXJnMi9mallOYWZDSVJZbCtnSmZwQjdaZUp4ajhON0JjQ0lvWWlNalkxL2tCc2FkSEF3Y0RNa0ZHeGxZblRZeE1ESm9nUmlidVpnWU9TQXNQZ1l3aTgxcEY5TUJvRFFua00zdXRJdkJBY0ptWm5EWnFNTFlFUml4d2FFallpTnppc3RHTlJCdkYwY0RBeU9MUTBkeVNBUklTU1FRYk9aaFl1VFIyc0g0djNVRFMrOUdKZ1lYQUF4MkkvUUFBQT09KVxuICAgIGZvcm1hdCgnd29mZicpO1xufVxuXG4uZGVtby1pY29uIHtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1mYW1pbHk6ICdzcHJlYWR2aWV3LWRlbW8taWNvbic7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi5pY29uLXRoOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGU4MDAnO1xufSAvKiAn7qCAJyAqL1xuXG4uaWNvbi10aC1saXN0OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGU4MDEnO1xufSAvKiAn7qCBJyAqL1xuXG4ubWFpbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uc2FtcGxlLW9wdGlvbnMge1xuICBmbGV4LWdyb3c6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBiYWNrZ3JvdW5kOiAjZmJmYmZiO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAxMHB4O1xufVxuXG4uZ3JpZCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDU0cHgpO1xuICBmbGV4LWdyb3c6IDE7XG4gIGZsZXgtc2hyaW5rOiAxO1xufVxuXG4vLyBjYXJkIGl0ZW1zXG5cbi5nYy1ncmlkIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uZmlsbS1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kOiAjZjFmMWYxO1xuICBib3JkZXI6IHNvbGlkIDFweCAjZTBlMGUwO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xuICBtYXgtaGVpZ2h0OiAyMTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmZpbG0tY292ZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogMWVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uZmlsbS1jb3Zlci1saXN0IHtcbn1cblxuLmZpbG0tY29udGVudCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMC40ZW0gMDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgd2lkdGg6IDQwJTtcbn1cblxuLmZpbG0tY29udGVudC1saXN0IHtcbiAgd2lkdGg6IDg3JTtcbn1cblxuLmMxIHtcbiAgbWFyZ2luLWJvdHRvbTogMC40ZW07XG59XG5cbi5jMiB7XG4gIGNvbG9yOiAjNjY2O1xuICBmb250LXNpemU6IDEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDAuNGVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uZmlsbS1kZXNjcmlwdGlvbiB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5maWxtLWNvbnRlbnQtbGlzdCB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbiAgLmMyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cblxuLy8gZmlsbSBwb3N0ZXJcblxuLnBvc3Rlci1saXN0LXJlc2l6ZSB7XG4gIGhlaWdodDogOTZweDtcbiAgd2lkdGg6IGF1dG87XG59XG5cbi8vIGZpbG0gdGl0bGUgbGlua1xuXG4uZmlsbS10aXRsZS1saW5rIHtcbiAgY29sb3I6ICMxMzZjYjI7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uZmlsbS10aXRsZS1saW5rOnZpc2l0ZWQge1xuICBjb2xvcjogIzcwNTc5ZDtcbn1cblxuLmZpbG0tdGl0bGUtbGluazpob3ZlciB7XG4gIGNvbG9yOiAjMTM2Y2IyO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLy8gZmlsbSBjYXRlZ29yeVxuXG4uZmlsbS1jZXJ0aWZpY2F0aW9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2FhYTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5zYW1wbGUtb3B0aW9ucyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIl19 */
(function () {
const IS_PROD = window.process.env.NODE_ENV === 'production';
const USE_NPM = window.process.env.USE_NPM;
const USE_CDN = window.process.env.USE_CDN;
const SITE_ROOT = window.process.env.SITE_ROOT;
const FRAMEWORK = window.process.env.FRAMEWORK;
const ext = IS_PROD ? '.min.js' : '.js';
function js(name) {
return name + ext;
}
function npm(t) {
if (!t.file) {
t.file = IS_PROD ? t.prod : t.dev;
}
const version = USE_CDN && t.version ? '@' + t.version : '';
const path = t.pkg + version + '/' + t.file;
if (USE_CDN) {
return 'https://unpkg.com/' + path;
}
return 'npm:' + path;
}
function dv(t) {
if (USE_CDN || USE_NPM) {
t.file = 'dist/' + t.file + '.min.js';
return npm(t);
}
return SITE_ROOT + '/static/dataviews/' + js(t.file);
}
const isTypeScript = FRAMEWORK === 'angular';
const babelConfig = {
es2015: true,
react: true,
};
const meta = {
js: {
babelOptions: babelConfig,
},
ts: {
typescriptOptions: {
tsconfig: true
},
},
};
const map = {
// gc.dataviews packages
'@grapecity/dataviews.common': dv({pkg:'@grapecity/dataviews.common',file:'gc.dataviews.common',version:'1.8.17'}),
'@grapecity/dataviews.core': dv({pkg:'@grapecity/dataviews.core',file:'gc.dataviews.core',version:'1.8.17'}),
'@grapecity/dataviews.grid': dv({pkg:'@grapecity/dataviews.grid',file:'gc.dataviews.grid',version:'1.8.17'}),
'@grapecity/dataviews.cardlayout': dv({pkg:'@grapecity/dataviews.cardlayout',file:'gc.dataviews.cardlayout',version:'1.8.17'}),
'@grapecity/dataviews.masonry': dv({pkg:'@grapecity/dataviews.masonry',file:'gc.dataviews.masonry',version:'1.8.17'}),
'@grapecity/dataviews.calendar': dv({pkg:'@grapecity/dataviews.calendar',file:'gc.dataviews.calendar',version:'1.8.17'}),
'@grapecity/dataviews.timeline': dv({pkg:'@grapecity/dataviews.timeline',file:'gc.dataviews.timeline',version:'1.8.17'}),
'@grapecity/dataviews.trellis': dv({pkg:'@grapecity/dataviews.trellis',file:'gc.dataviews.trellis',version:'1.8.17'}),
'@grapecity/dataviews.gantt': dv({pkg:'@grapecity/dataviews.gantt',file:'gc.dataviews.gantt',version:'1.8.17'}),
'@grapecity/dataviews.searchbox': dv({pkg:'@grapecity/dataviews.searchbox',file:'gc.dataviews.searchbox',version:'1.8.17'}),
'@grapecity/dataviews.react': dv({pkg:'@grapecity/dataviews.react',file:'gc.dataviews.react',version:'1.8.17'}),
'@grapecity/dataviews.vue': dv({pkg:'@grapecity/dataviews.vue',file:'gc.dataviews.vue',version:'1.8.17'}),
'@grapecity/dataviews.angular': dv({pkg:'@grapecity/dataviews.angular',file:'gc.dataviews.angular',version:'1.8.17'}),
'@grapecity/dataviews.csvexport': dv({pkg:'@grapecity/dataviews.angular',file:'gc.dataviews.csvexport',version:'1.8.17'}),
// third-party libs
react: npm({pkg:'react',prod:'umd/react.production.min.js',dev:'umd/react.development.js',version:'16.13.1'}),
'react-dom': npm({pkg:'react-dom',prod:'umd/react-dom.production.min.js',dev:'umd/react-dom.development.js',version:'16.13.1'}),
'react-router-dom': npm({pkg:'react-router-dom',prod:'umd/react-router-dom.min.js',dev:'umd/react-router-dom.js',version:'5.2.0'}),
'vue': npm({pkg:'vue',file:'dist/vue.js',version:'2.6.12'}),
'vue-router': npm({pkg:'vue-router',file:'dist/vue-router.js',version:'3.4.3'}),
'lodash': npm({pkg: 'lodash', file: js('lodash')}),
'zone.js': npm({pkg: 'zone.js', file: js('dist/zone')}),
'rxjs': npm({pkg: 'rxjs', file: js('bundles/rxjs.umd')}),
'rxjs/operators': npm({pkg:'rxjs-operators-bundle',prod:'dist/bundle.min.js',dev:'dist/bundle.js',version:'1.0.2'}),
'@angular/core': npm({pkg: '@angular/core', file: js('bundles/core.umd')}),
'@angular/common': npm({pkg: '@angular/common', file: js('bundles/common.umd')}),
'@angular/compiler': npm({pkg: '@angular/compiler', file: js('bundles/compiler.umd')}),
'@angular/platform-browser': npm({pkg: '@angular/platform-browser', file: js('bundles/platform-browser.umd')}),
'@angular/platform-browser-dynamic': npm({pkg: '@angular/platform-browser-dynamic', file: js('bundles/platform-browser-dynamic.umd')}),
'@angular/http': npm({pkg: '@angular/http', file: js('bundles/http.umd')}),
'@angular/common/http': npm({pkg: '@angular/common', file: js('bundles/common-http.umd')}),
'@angular/router': npm({pkg: '@angular/router', file: js('bundles/router.umd')}),
'@angular/forms': npm({pkg: '@angular/forms', file: js('bundles/forms.umd')}),
// systemjs plugins
'systemjs-plugin-json': npm({pkg:'systemjs-plugin-json',file:'json.js',version:'0.3.0'}),
'systemjs-plugin-css': npm({pkg:'systemjs-plugin-css',file:'css.js',version:'0.1.37'}),
'systemjs-plugin-babel': npm({pkg:'systemjs-plugin-babel',file:'plugin-babel.js',version:'0.0.25'}),
'systemjs-babel-build': npm({pkg:'systemjs-plugin-babel',file:'systemjs-babel-browser.js',version:'0.0.25'}),
'plugin-typescript': npm({pkg:'plugin-typescript',file:'lib/plugin.js',version:'8.0.0'}),
'typescript': npm({pkg:'typescript',file:'lib/typescript.js',version:'4.0.2'}),
'systemjs-vue-browser': npm({pkg:'systemjs-vue-browser',file:'index.js',version:'1.0.11'}),
};
const config = {
defaultJSExtensions: true,
transpiler: isTypeScript ? 'plugin-typescript' : 'systemjs-plugin-babel',
typescriptOptions: {
tsconfig: true
},
meta: {
'*.json': {loader: 'systemjs-plugin-json'},
'*.css': {loader: 'systemjs-plugin-css'},
'*.vue': {loader: 'systemjs-vue-browser'},
'*.js': meta.js,
'*.ts': meta.ts,
'app.js': {
format: 'esm',
babelOptions: babelConfig,
},
'typescript': {
exports: 'ts',
},
'@grapecity/dataviews.common': {
format: 'amd',
},
'@grapecity/dataviews.core': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.grid': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
'@grapecity/dataviews.core',
],
},
'@grapecity/dataviews.cardlayout': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.masonry': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.calendar': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
'@grapecity/dataviews.core',
],
},
'@grapecity/dataviews.timeline': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.trellis': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.gantt': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.searchbox': {
format: 'amd',
deps: [
'@grapecity/dataviews.common',
],
},
'@grapecity/dataviews.react': {
format: 'amd',
deps: [
'react',
'@grapecity/dataviews.common',
'@grapecity/dataviews.core'
],
},
'@grapecity/dataviews.vue': {
format: 'amd',
deps: [
'vue',
'@grapecity/dataviews.common',
'@grapecity/dataviews.core'
],
},
'@grapecity/dataviews.angular': {
format: 'amd',
deps: [
'@angular/core',
'@grapecity/dataviews.common',
'@grapecity/dataviews.core'
],
},
'@grapecity/dataviews.csvexport': {
format: 'amd',
deps: [
'@grapecity/dataviews.common'
],
},
},
paths: {
// paths serve as alias
'npm:': SITE_ROOT + '/node_modules/',
},
// map tells the System loader where to look for things
map: map,
// packages tells the System loader how to load when no filename and/or no extension
packages: {
'.': { defaultExtension: isTypeScript ? 'ts' : 'js' },
node_modules: { defaultExtension: 'js' },
}
};
// fast format detection to avoid detection by source code using regexp
Object.keys(map).filter(function (key) {
return !config.meta[key];
}).forEach(function (key) {
const path = map[key];
if (path.indexOf('/umd') >= 0 || path.indexOf('.umd') >= 0) {
config.meta[key] = { format: 'amd' };
}
if (path.indexOf('/cjs') >= 0) {
config.meta[key] = { format: 'cjs' };
}
});
System.config(config);
})(this);