WidgetApplication/a>/li>/n/ol>/nAn instance of the widget is managed by a <a href=https://samsungtizenos.com/"..//app-management//widget-viewer.md/">Widget Viewer<\/a> application. Widget process is created when a widget application is added to the widget viewer.<\/p>\n<p><strong>Figure: Widget application<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//dali_widget_application.png/" alt=\"NUI widget application\" \/><\/p>\n<h2 id=\"content-widget-features\"><a href=https://samsungtizenos.com/"#content-widget-features\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Widget features<\/h2>\n<p>The main features of the widget application includes the following:<\/p>\n<ul>\n<li>\n<p>Creating widget applications<\/p>\n<p>You can <a href=https://samsungtizenos.com/"#create-widget\">create a widget application<\/a> that usually has a single process for maintaining the main loop. Within the process, the framework can <a href=https://samsungtizenos.com/"#widget-instances\">create multiple widget instances<\/a> that can share the same resources. The widget application can also share data with other applications. The widget application can also <a href=https://samsungtizenos.com/"#share\">share data<\/a> with other applications. Multiple instances of the same widget app could be used to create different UI for different size of the widget instance.<\/p>\n<\/li>\n<li>\n<p>Managing multiple widget instances<\/p>\n<p>Whenever a widget instance is requested, the framework creates one. You can manage the widget instances by updating or destroying them, or by retrieving information about them.<\/p>\n<\/li>\n<li>\n<p>Managing the life cycle<\/p>\n<p>You can manage the <a href=https://samsungtizenos.com/"#life-cycle\">widget instance<\/a> life cycle through callback methods that are triggered as the instance state changes.<\/p>\n<\/li>\n<li>\n<p>Creating the widget UI<\/p>\n<p>The widget application can create a user interface that appears on the home screen or other widget viewer applications. The UI of the widget application limits scroll actions to provide a better user experience. It is recommended that you design the UI layout within the given screen size.<\/p>\n<\/li>\n<\/ul>\n<div id=\"NoteSection\">\n <div class=\"sampletab \" id=\"note_tab\">\n <button id=\"note-nui\" class=\"tablinks\" onclick=\"openTabSection(event, 'note-nui-content', 'NoteSection') \">NUI Widget<\/button>\n <button id=\"note-base\" class=\"tablinks\" onclick=\"openTabSection(event, 'note-base-content', 'NoteSection') \">Widget<\/button>\n <\/div>\n <div id=\"note-nui-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n <blockquote class=\"note\">\n <p><strong>Note<\/strong><\/p>\n <p>To draw the layout, you have to use the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.Window.md/">Window/code>/a> instance received from the <code>OnCreate<\/code> callback. If you create additional windows, the stack of widget application windows gets corrupted. This is because the platform handles the widget application window in a particular way.<\/p>\n <\/blockquote>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n <div id=\"note-base-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n <blockquote class=\"note\">\n <p><strong>Note<\/strong><\/p>\n <p>To draw the UI, use a single window as a protected property of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.WidgetBase.md/">Tizen.Applications.WidgetBase/a> class. Do not create additional windows. A stack of widget application windows gets corrupted, because the platform handles the widget application window in a special way.<\/p>\n <\/blockquote>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n<\/div>\n<p><a name=\"widget-instances\"><\/a><\/p>\n<h2 id=\"content-widget-instances\"><a href=https://samsungtizenos.com/"#content-widget-instances\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Widget instances<\/h2>\n<div id=\"ViewerSection\">\n <div class=\"sampletab \" id=\"note_tab\">\n <button id=\"viewer-nui\" class=\"tablinks\" onclick=\"openTabSection(event, 'viewer-nui-content', 'ViewerSection') \">NUI Widget<\/button>\n <button id=\"viewer-base\" class=\"tablinks\" onclick=\"openTabSection(event, 'viewer-base-content', 'ViewerSection') \">Widget<\/button>\n <\/div>\n <div id=\"viewer-nui-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n <p><a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.NUIWidgetApplication.md/">NUIWidgetApplication/code>/a> makes diverse class instances whenever <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.WidgetView.md/">WidgetView/code>/a> requests for a widget instance.<\/p>\n <p>The widget instance has its own life cycle similar to that of the widget application. However, the widget instance is an object created by the widget viewer application. Many widget instances can be running on a widget application process.<\/p>\n <blockquote class=\"alert alert-note\"><span class=\"alert-title\"><span class=\"alert-title--icon\"><\/span><span class=\"alert-title--text\">Note<\/span><\/span>\n <p> The case to use many widget instances in one widget application is known as multi-instance. In some devices, the multi-instance may not be supported. If a device does not support multi-instance, an error message is displayed.<\/p>\n <\/blockquote>\n <p><a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.WidgetView.md/">WidgetView/code>/a> shows the contents drawn by <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.Widget.md/">Widget/code>/a> on the screen.<\/p>\n <p>To summarize, you create a NUI WidgetApplication, create a NUI WidgetView, and use Widget to view layout on the screen.<\/p>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n <div id=\"viewer-base-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n <p>The <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.WidgetApplication.md/">WidgetApplication/a> class provides the <code>WidgetApplication(IDictionary< Type, string > typeInfo)<\/code> constructor, that allows a widget application to have multiple widget classes. The widget applications with multiple classes can make diverse class instances whenever widget viewer applications, such as the home screen and the lock screen, request for a widget instance.<\/p>\n <p>The widget instance has its own life cycle similar to the widget application. However, the widget instance is only an object shown by the widget viewer applications. Many widget instances can be running on the same widget application process.<\/p>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n<\/div>\n<p><strong>Figure: Widget instances<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//widget_homescreen.png/" alt=\"Each widget application has 1 or more widget instances\" \/><\/p>\n<p><a name=\"life-cycle\"><\/a><\/p>\n<h2 id=\"content-widget-instance-states-and-events\"><a href=https://samsungtizenos.com/"#content-widget-instance-states-and-events\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Widget instance states and events<\/h2>\n<p>The following figure illustrates the widget instance states during the instance life cycle:<\/p>\n<ul>\n<li>When the application is in the Ready state, the instance does not exist.<\/li>\n<li>When the instance is created, it is in the Created state.<\/li>\n<li>When the instance is visible, it is in the Running state.<\/li>\n<li>When the instance is invisible, it is in the Paused state.<\/li>\n<li>When the instance is destroyed, it is in the Destroyed state.<\/li>\n<\/ul>\n<p><strong>Figure: Widget instance life cycle<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//csharp_widgetapplication.png/" alt=\"Widget instance life cycle\" \/><\/p>\n<div id=\"ClassSection\">\n <div class=\"sampletab \" id=\"note_tab\">\n <button id=\"class-nui\" class=\"tablinks\" onclick=\"openTabSection(event, 'class-nui-content', 'ClassSection') \">NUI Widget<\/button>\n <button id=\"class-base\" class=\"tablinks\" onclick=\"openTabSection(event, 'class-base-content', 'ClassSection') \">Widget<\/button>\n <\/div>\n <div id=\"class-nui-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n<span style=\"display:block\">\n<p>The following table lists the callbacks you can use as the instance state changes.<\/p>\n<p><strong>Table: Instance state change callbacks<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Callback<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>OnCreate()<\/code><\/td>\n<td>Called after the widget instance is created.<\/td>\n<\/tr>\n<tr>\n<td><code>OnTerminate()<\/code><\/td>\n<td>Called before the widget instance is destroyed.<\/td>\n<\/tr>\n<tr>\n<td><code>OnPause()<\/code><\/td>\n<td>Called when the widget is invisible.<\/td>\n<\/tr>\n<tr>\n<td><code>OnResume()<\/code><\/td>\n<td>Called when the widget is visible.<\/td>\n<\/tr>\n<tr>\n<td><code>OnResize()<\/code><\/td>\n<td>Called before the widget size is changed.<\/td>\n<\/tr>\n<tr>\n<td><code>OnUpdate()<\/code><\/td>\n<td>Called when an event for updating the widget is received.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>You can declare a widget class by inheriting the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.Widget.md/">Tizen.NUI.Widget/a> class. For example:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">class<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">MyWidget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> : <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Tizen<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">NUI<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Widget<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnCreate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">contentInfo<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Window<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">window<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnTerminate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">contentInfo<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Widget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">TerminationType<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">type<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnPause<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResume<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResize<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Window<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">window<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnUpdate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">contentInfo<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">isForce<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/span>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n <div id=\"class-base-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n<span style=\"display:block\">\n<p>The following table lists the callbacks you can use as the instance state changes.<\/p>\n<p><strong>Table: Instance state change callbacks<\/strong><\/p>\n<div class=\"overflow-auto grid table-fixed\" data-table-container=\"data-table-container\"><table>\n<thead>\n<tr>\n<th>Callback<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>OnCreate()<\/code><\/td>\n<td>Called after the widget instance is created.<\/td>\n<\/tr>\n<tr>\n<td><code>OnDestroy()<\/code><\/td>\n<td>Called before the widget instance is destroyed.<\/td>\n<\/tr>\n<tr>\n<td><code>OnPause()<\/code><\/td>\n<td>Called when the widget is invisible.<\/td>\n<\/tr>\n<tr>\n<td><code>OnResume()<\/code><\/td>\n<td>Called when the widget is visible.<\/td>\n<\/tr>\n<tr>\n<td><code>OnResize()<\/code><\/td>\n<td>Called before the widget size is changed.<\/td>\n<\/tr>\n<tr>\n<td><code>OnUpdate()<\/code><\/td>\n<td>Called when an event for updating the widget is received.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>You can declare a widget class by inheriting the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.WidgetBase.md/">Tizen.Applications.WidgetBase/a> class. For example:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">class<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">MyWidget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> : <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetBase<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnCreate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">w<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">h<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnPause<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResume<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResize<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">w<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">h<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnUpdate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">bool<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">isForce<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnDestroy<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetBase<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetDestroyType<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">reason<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/span>\n <\/tr>\n <\/tbody>\n <\/table>\n <\/div>\n<\/div>\n<h2 id=\"content-prerequisites\"><a href=https://samsungtizenos.com/"#content-prerequisites\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Prerequisites<\/h2>\n<p>To enable your application to use the widget functionality, you have to modify application manifest file by adding proper privileges:<\/p>\n<code class=\"language-XML\"><privileges>\n <privilege>http:\/\/tizen.org\/privilege\/widget.viewer<\/privilege>\n <privilege>http:\/\/tizen.org\/privilege\/appmanager.launch<\/privilege>\n<\/privileges>\n<\/code>\n<p><a name=\"create-widget\"><\/a><\/p>\n<h2 id=\"content-create-a-widget-application\"><a href=https://samsungtizenos.com/"#content-create-a-widget-application\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Create a widget application<\/h2>\n<div id=\"CodeSection\">\n <div class=\"sampletab \" id=\"code_tab\">\n <button id=\"code-nui\" class=\"tablinks\" onclick=\"openTabSection(event, 'code-nui-content', 'CodeSection') \">NUI Widget<\/button>\n <button id=\"code-base\" class=\"tablinks\" onclick=\"openTabSection(event, 'code-base-content', 'CodeSection') \">Widget<\/button>\n <\/div>\n <div id=\"code-nui-content\" class=\"tabcontent\">\n <table>\n <tbody>\n <tr>\n<span style=\"display:block\">\n<ol>\n<li>\n<p>To use the methods and properties of <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.md/">Tizen.NUI/a> namespace, include it in your application:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">using<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Tizen<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">NUI<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>Define your widget application class, which is inherited from <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.NUIWidgetApplication.md/">NUIWidgetApplication/a> class:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">class<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Program<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> : <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">NUIWidgetApplication<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The widget application starts with <code>Main()<\/code>, which creates and initializes the application. <code>Run()<\/code> method of <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.NUIWidgetApplication.md/">NUIWidgetApplication/a> class is used to start the application event loop. <code>NUIWidgetApplication<\/code> class provides the two following kinds of constructors:<\/p>\n<ul>\n<li>For using the <code>NUIWidgetApplication(Type type)<\/code> constructor, in case the widget application's ID is the same as the application ID:<\/li>\n<\/ul>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">static<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Main<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">[] <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">args<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">var<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">app<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">new<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Program<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">typeof<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">MyWidget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> app.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Run<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(args);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<ul>\n<li>For using the <code>NUIWidgetApplication(Dictionary< Type, string > typeInfo)<\/code> constructor, in case your widget applications have multiple widget classes. For multiple instances, add <code><widget-class><\/code> in XML as follows:<\/li>\n<\/ul>\n<code class=\"language-XML\"> <widget-class classid="second" update-period="0">\n <support-size preview="Widget.png">2x2<\/support-size>\n <\/widget-class>\n<\/code>\n<p>You can then modify the code as follows:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">static<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Main<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">[] <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">args<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Dictionary<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"><<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">System<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Type<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">widgetSet<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">new<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Dictionary<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"><<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Type<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">string<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">>();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> widgetSet.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Add<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">typeof<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">MyWidget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">), <\/span><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">"second@org.tizen.example.WidgetTemplate"<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">var<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">app<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">new<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Program<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(widgetSet);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> app.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Run<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(args);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>Define your widget class, which is inherited from <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.Widget.md/">Widget/a>:/p>/nTizen.Applications.WidgetApplication/a> class is used to start the application event loop. The <code>Tizen.Applications.WidgetApplication<\/code> class provides 2 kinds of constructors:<\/p>\n<ul>\n<li>If you create the widget application with the <code>WidgetApplication(Type type)<\/code> constructor, that widget application's ID is the same as the application ID.<\/li>\n<li>Using the <code>WidgetApplication(IDictionary<Type, string> typeInfo)<\/code> constructor, you can make widget applications with multiple widget classes.<\/li>\n<\/ul>\n<ol>\n<li>\n<p>To use the methods and properties of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.md/">Tizen.Applications/a> namespace, include it in your application:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">using<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Tizen<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Applications<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>Define your widget class, which is inherited from the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.WidgetBase.md/">Tizen.Applications.WidgetBase/a> class:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">class<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">MyWidget<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> : <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetBase<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>Override the event callback methods of your new class:<\/p>\n<ul>\n<li>\n<p>The <code>OnCreate()<\/code> callback is triggered when the widget instance is created.<\/p>\n<p>Initialize resources for this widget instance and <a href=https://samsungtizenos.com/"#draw_window\">draw the UI<\/a>. If bundle content is not <code>NULL<\/code>, restore the previous status:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnCreate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">w<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">h<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">try<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">base<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnCreate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(content, w, h);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ Recover the previous status with the bundle object<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ Create the UI<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">catch<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> (<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Exception<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">e<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> Log.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Warn<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(_logTag, <\/span><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">"exception "<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">+<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> e);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The <code>OnDestroy()<\/code> callback is triggered when the widget instance is destroyed.<\/p>\n<p>Release all widget resources. If the <code>reason<\/code> for the termination is not <code>WidgetBase.WidgetDestroyType.Permanent<\/code>, store the current status with the incoming bundle.<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnDestroy<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetBase<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">.<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">WidgetDestroyType<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">reason<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">if<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> (reason <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">!=<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> WidgetBase.WidgetDestroyType.Permanent)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D;--shiki-dark:#6A737D\"> \/\/\/ Save the current status at the bundle object<\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The <code>OnPause()<\/code> callback is triggered when the widget instance is paused.<\/p>\n<p>Take the necessary actions when the widget instance becomes invisible. The framework can destroy a paused widget instance.<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnPause<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The <code>OnResume()<\/code> callback is triggered when the widget instance is resumed.<\/p>\n<p>Take the necessary actions when the widget instance becomes visible.<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResume<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">() {}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The <code>OnResize()<\/code> callback is triggered before the widget instance is resized.<\/p>\n<p>Take the necessary actions to accommodate the new size.<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnResize<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">w<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">int<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">h<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<li>\n<p>The <code>OnUpdate()<\/code> callback is triggered when a widget update event is received.<\/p>\n<p>Take the necessary actions for the widget update. If the <code>isForce<\/code> parameter is <code>true<\/code>, the widget can be updated even in the pause state.<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\">public<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">override<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">void<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">OnUpdate<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">(<\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">Bundle<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">content<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">, <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">bool<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#6F42C1;--shiki-dark:#B392F0\">isForce<\/span><span style=\"color:#24292E;--shiki-dark:#E1E4E8\">) {}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><a name=\"draw_window\"><\/a>\n4. The widget UI is drawn in the <code>OnCreate()<\/code> callback of your widget class:<\/p>\n<pre class=\"shiki shiki-themes github-light github-dark\" style=\"background-color:#fff;--shiki-dark-bg:#24292e;color:#24292e;--shiki-dark:#e1e4e8;\"><code><span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">```csharp<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">public override void OnCreate(Bundle content, int w, int h)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> try<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> base.OnCreate(content, w, h);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Conformant conformant = new Conformant(Window);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> conformant.Show();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Scroller scroller = new Scroller(Window)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentX = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentY = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightX = 1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightY = 1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> ScrollBlock = ScrollBlock.None,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> };<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> scroller.Show();<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Box box = new Box(Window)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentX = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentY = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightX = 1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightY = 1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> };<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> box.Show();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> scroller.SetContent(box);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> conformant.SetContent(scroller);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Button exitButton = new Button(Window)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Text = "Exit Test",<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentX = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> AlignmentY = -1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightX = 1,<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> WeightY = 1<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> };<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> box.PackEnd(exitButton);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> exitButton.Show();<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> catch (Exception e)<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> Log.Warn(_logTag, "exception " + e);<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\"> }<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">}<\/span><\/span>\n<span class=\"line\"><span style=\"color:#032F62;--shiki-dark:#9ECBFF\">```<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">span<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">tr<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">tbody<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">table<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><span style=\"color:#24292E;--shiki-dark:#E1E4E8\"> <\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">div<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><span style=\"color:#D73A49;--shiki-dark:#F97583\"><\/<\/span><span style=\"color:#005CC5;--shiki-dark:#79B8FF\">div<\/span><span style=\"color:#D73A49;--shiki-dark:#F97583\">><\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre>\n<p><a name=\"share\"><\/a><\/p>\n<h2 id=\"content-data-sharing-between-the-widget-application-and-other-applications\"><a href=https://samsungtizenos.com/"#content-data-sharing-between-the-widget-application-and-other-applications\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Data sharing between the widget application and other applications<\/h2>\n<p>You can share data between widget applications and UI (or service) applications. However, you must understand that this kind of data sharing is dependent on the file system. The reason is that the system (home screen) controls the widget application life cycle, while the UI application life cycle is mostly explicitly controlled by the user.<\/p>\n<p>For example, consider the differences between a Weather application and a Weather widget:<\/p>\n<ul>\n<li>The Weather application is launched when the user selects it from the application list.<\/li>\n<li>The widget is launched when the home screen is on screen and is terminated when the home screen is hidden.<\/li>\n<\/ul>\n<p>Although the widget wants to share some data from the Weather application (such as the user's favorite city), it is ineffective for the widget to launch the Weather application every time to retrieve such data. This inefficiency makes it difficult to use typical IPC mechanisms, such as sockets and <a href=https://samsungtizenos.com/"..//exchange-data-between-apps//message-port.md/">message ports<\/a>, for which both the receiver and sender processes must be alive. To overcome this limitation, the widget application must use a communication method that stores data permanently somewhere in the system.<\/p>\n<p>In the Tizen platform, applications in the same package (including widget applications) can access files in the <code>data<\/code> directory of the package installation path. This means that the UI (or service) application can first write files to the <code>data<\/code> directory, and the widget can later read them, or vice versa.<\/p>\n<p><strong>Figure: Sharing through the data directory<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//widget_data_share.png/" alt=\"Sharing through the data directory\" \/><\/p>\n<p>To manage data through the <code>data<\/code> directory, you can use the methods and properties of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.Preference.md/">Tizen.Applications.Preference/a> class to store and retrieve key-value pairs.<\/p>\n<p>If an application requires complex control over a widget, such as Music Player, it must implement a service application in the middle and use a data control with the classes and methods of the <a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.DataControl.md/">Tizen.Applications.DataControl/a> namespace.<\/p>\n<p>For example, a music-player-service service application is needed to control the audio device, process audio files, handle play and stop signals. The music-player-ui and music-player-widget applications display the UI controls, title, album art, and other content retrieved from the music-player-service service application. The service application can export its data using the data control to <a href=https://samsungtizenos.com/"..//exchange-data-between-apps//data-control.md/">provide data to the other applications<\/a> (widget and UI) simultaneously. The following figure illustrates the typical data control flows between the set of UI, service, and widget applications.<\/p>\n<p><strong>Figure: Sharing through data control<\/strong><\/p>\n<p><img src=https://samsungtizenos.com/"media//widget_data_control_share.png/" alt=\"Sharing through data control\" \/><\/p>\n<h2 id=\"content-related-information\"><a href=https://samsungtizenos.com/"#content-related-information\" class=\"heading-permalink\" aria-hidden=\"true\" title=\"Permalink\">\u00b6<\/a>Related information<\/h2>\n<ul>\n<li>Dependencies\n<ul>\n<li>Tizen 4.0 and Higher<\/li>\n<\/ul>\n<\/li>\n<li>API References\n<ul>\n<li><a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.NUI.NUIWidgetApplication.md/">Tizen.NUI.NUIWidgetApplication/a> class<\/li>\n<li><a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.WidgetApplication.md/">Tizen.Applications.WidgetApplication/a> class<\/li>\n<li><a href=https://samsungtizenos.com/"//application//dotnet//api//TizenFX//latest//api//Tizen.Applications.CoreApplication.md/">Tizen.Applications.CoreApplication/a> class<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<script>\n function openTabSection(evt, profileName, sectionId) {\n var i, tabcontent, tablinks, section;\n let selected = 0;\n\n section = document.getElementById(sectionId);\n tabcontent = section.getElementsByClassName(\"tabcontent\");\n\n for (i = 0; i < tabcontent.length; i++) {\n tabcontent[i].style.display = \"none\";\n if (tabcontent[i].id == profileName) {\n selected = i;\n }\n }\n\n tablinks = section.getElementsByClassName(\"tablinks\");\n\n for (i = 0; i < tablinks.length; i++) {\n tablinks[i].className = tablinks[i].className.replace(\" active\", \"\");\n }\n\n tabcontent[selected].style.display = \"block\";\n evt.currentTarget.className += \" active\";\n }\n\n document.getElementById(\"note-nui\").click();\n document.getElementById(\"viewer-nui\").click();\n document.getElementById(\"class-nui\").click();\n document.getElementById(\"code-nui\").click();\n<\/script>\n","table_of_content":"<ul class=\"table-of-contents\">\n<li><a href=https://samsungtizenos.com/"#content-widget-features\">Widget features<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-widget-instances\">Widget instances<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-widget-instance-states-and-events\">Widget instance states and events<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-prerequisites\">Prerequisites<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-create-a-widget-application\">Create a widget application<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-data-sharing-between-the-widget-application-and-other-applications\">Data sharing between the widget application and other applications<\/a><\/li>\n<li><a href=https://samsungtizenos.com/"#content-related-information\">Related information<\/a><\/li>\n<\/ul>\n","title":"Widget Application","raw":null},{"class":"App\\Services\\Documentation\\Data\\RenderedMarkdown","s":"wrbl"}]},"memo":{"id":"eErsHYB2hkpxsLJY0clX","name":"documentation::article","path":"docs\/application\/dotnet\/guides\/applications\/uiapplication\/widget-app","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"lazyLoaded":false,"lazyIsolated":true,"errors":[],"locale":"en","islands":[]},"checksum":"4a6d662299bc9a837990097453adbe5f6cd0fd64c687ad19dfb818a4c26d6fb3"}" wire:effects="[]" wire:id="eErsHYB2hkpxsLJY0clX" wire:name="documentation::article" x-init="$wire.__lazyLoad('eyJkYXRhIjp7ImZvck1vdW50IjpbeyJtYXJrZG93biI6W3siYm9keSI6IjxoMSBpZD1cImNvbnRlbnQtd2lkZ2V0LWFwcGxpY2F0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LXdpZGdldC1hcHBsaWNhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+V2lkZ2V0IEFwcGxpY2F0aW9uPFwvaDE+PGRpdiBkYXRhLWtub3dsZWRnZS1iYXNlLW1ldGFkYXRhPjxcL2Rpdj5cbjxkaXYgY2xhc3M9XCJtZC1hbGVydCBtZC1hbGVydC1ub3RlXCI+XG48c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMFwvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiPjxwYXRoIGQ9XCJNMCA4YTggOCAwIDEgMSAxNiAwQTggOCAwIDAgMSAwIDhabTgtNi41YTYuNSA2LjUgMCAxIDAgMCAxMyA2LjUgNi41IDAgMCAwIDAtMTNaTTYuNSA3Ljc1QS43NS43NSAwIDAgMSA3LjI1IDdoMWEuNzUuNzUgMCAwIDEgLjc1Ljc1djIuNzVoLjI1YS43NS43NSAwIDAgMSAwIDEuNWgtMmEuNzUuNzUgMCAwIDEgMC0xLjVoLjI1di0yaC0uMjVhLjc1Ljc1IDAgMCAxLS43NS0uNzVaTTggNmExIDEgMCAxIDEgMC0yIDEgMSAwIDAgMSAwIDJaXCJcLz48XC9zdmc+Tm90ZTxcL3NwYW4+XG48cD5XaWRnZXRBcHBsaWNhdGlvbiBjbGFzcyBpcyBkZXByZWNhdGVkIHNpbmNlIEFQSSBMZXZlbCAxMCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIEFQSSBMZXZlbCAxMi48XC9wPlxuPFwvZGl2PlxuPHA+VGhlIHdpZGdldCBhcHBsaWNhdGlvbnMgYXJlIGNvbW1vbmx5IHVzZWQgaW4gYXBwbGljYXRpb25zIGxpa2UgaG9tZSBzY3JlZW4gb3IgbG9jayBzY3JlZW4uIFRoZSAuTkVUIFRpemVuIEFQSSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHR3byBjbGFzc2VzIHRoYXQgYWxsb3dzIHlvdSB0byBpbXBsZW1lbnQgd2lkZ2V0IGFwcGxpY2F0aW9uczo8XC9wPlxuPG9sPlxuPGxpPjxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5OVUlXaWRnZXRBcHBsaWNhdGlvbi5tZFwiPk5VSVdpZGdldEFwcGxpY2F0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5BcHBsaWNhdGlvbnMuV2lkZ2V0QXBwbGljYXRpb24ubWRcIj5XaWRnZXRBcHBsaWNhdGlvbjxcL2E+PFwvbGk+XG48XC9vbD5cbjxwPkFuIGluc3RhbmNlIG9mIHRoZSB3aWRnZXQgaXMgbWFuYWdlZCBieSBhIDxhIGhyZWY9XCIuLlwvLi5cL2FwcC1tYW5hZ2VtZW50XC93aWRnZXQtdmlld2VyLm1kXCI+V2lkZ2V0IFZpZXdlcjxcL2E+IGFwcGxpY2F0aW9uLiBXaWRnZXQgcHJvY2VzcyBpcyBjcmVhdGVkIHdoZW4gYSB3aWRnZXQgYXBwbGljYXRpb24gaXMgYWRkZWQgdG8gdGhlIHdpZGdldCB2aWV3ZXIuPFwvcD5cbjxwPjxzdHJvbmc+RmlndXJlOiBXaWRnZXQgYXBwbGljYXRpb248XC9zdHJvbmc+PFwvcD5cbjxwPjxpbWcgc3JjPVwibWVkaWFcL2RhbGlfd2lkZ2V0X2FwcGxpY2F0aW9uLnBuZ1wiIGFsdD1cIk5VSSB3aWRnZXQgYXBwbGljYXRpb25cIiBcLz48XC9wPlxuPGgyIGlkPVwiY29udGVudC13aWRnZXQtZmVhdHVyZXNcIj48YSBocmVmPVwiI2NvbnRlbnQtd2lkZ2V0LWZlYXR1cmVzXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5XaWRnZXQgZmVhdHVyZXM8XC9oMj5cbjxwPlRoZSBtYWluIGZlYXR1cmVzIG9mIHRoZSB3aWRnZXQgYXBwbGljYXRpb24gaW5jbHVkZXMgdGhlIGZvbGxvd2luZzo8XC9wPlxuPHVsPlxuPGxpPlxuPHA+Q3JlYXRpbmcgd2lkZ2V0IGFwcGxpY2F0aW9uczxcL3A+XG48cD5Zb3UgY2FuIDxhIGhyZWY9XCIjY3JlYXRlLXdpZGdldFwiPmNyZWF0ZSBhIHdpZGdldCBhcHBsaWNhdGlvbjxcL2E+IHRoYXQgdXN1YWxseSBoYXMgYSBzaW5nbGUgcHJvY2VzcyBmb3IgbWFpbnRhaW5pbmcgdGhlIG1haW4gbG9vcC4gV2l0aGluIHRoZSBwcm9jZXNzLCB0aGUgZnJhbWV3b3JrIGNhbiA8YSBocmVmPVwiI3dpZGdldC1pbnN0YW5jZXNcIj5jcmVhdGUgbXVsdGlwbGUgd2lkZ2V0IGluc3RhbmNlczxcL2E+IHRoYXQgY2FuIHNoYXJlIHRoZSBzYW1lIHJlc291cmNlcy4gVGhlIHdpZGdldCBhcHBsaWNhdGlvbiBjYW4gYWxzbyBzaGFyZSBkYXRhIHdpdGggb3RoZXIgYXBwbGljYXRpb25zLiBUaGUgd2lkZ2V0IGFwcGxpY2F0aW9uIGNhbiBhbHNvIDxhIGhyZWY9XCIjc2hhcmVcIj5zaGFyZSBkYXRhPFwvYT4gd2l0aCBvdGhlciBhcHBsaWNhdGlvbnMuIE11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSB3aWRnZXQgYXBwIGNvdWxkIGJlIHVzZWQgdG8gY3JlYXRlIGRpZmZlcmVudCBVSSBmb3IgZGlmZmVyZW50IHNpemUgb2YgdGhlIHdpZGdldCBpbnN0YW5jZS48XC9wPlxuPFwvbGk+XG48bGk+XG48cD5NYW5hZ2luZyBtdWx0aXBsZSB3aWRnZXQgaW5zdGFuY2VzPFwvcD5cbjxwPldoZW5ldmVyIGEgd2lkZ2V0IGluc3RhbmNlIGlzIHJlcXVlc3RlZCwgdGhlIGZyYW1ld29yayBjcmVhdGVzIG9uZS4gWW91IGNhbiBtYW5hZ2UgdGhlIHdpZGdldCBpbnN0YW5jZXMgYnkgdXBkYXRpbmcgb3IgZGVzdHJveWluZyB0aGVtLCBvciBieSByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZW0uPFwvcD5cbjxcL2xpPlxuPGxpPlxuPHA+TWFuYWdpbmcgdGhlIGxpZmUgY3ljbGU8XC9wPlxuPHA+WW91IGNhbiBtYW5hZ2UgdGhlIDxhIGhyZWY9XCIjbGlmZS1jeWNsZVwiPndpZGdldCBpbnN0YW5jZTxcL2E+IGxpZmUgY3ljbGUgdGhyb3VnaCBjYWxsYmFjayBtZXRob2RzIHRoYXQgYXJlIHRyaWdnZXJlZCBhcyB0aGUgaW5zdGFuY2Ugc3RhdGUgY2hhbmdlcy48XC9wPlxuPFwvbGk+XG48bGk+XG48cD5DcmVhdGluZyB0aGUgd2lkZ2V0IFVJPFwvcD5cbjxwPlRoZSB3aWRnZXQgYXBwbGljYXRpb24gY2FuIGNyZWF0ZSBhIHVzZXIgaW50ZXJmYWNlIHRoYXQgYXBwZWFycyBvbiB0aGUgaG9tZSBzY3JlZW4gb3Igb3RoZXIgd2lkZ2V0IHZpZXdlciBhcHBsaWNhdGlvbnMuIFRoZSBVSSBvZiB0aGUgd2lkZ2V0IGFwcGxpY2F0aW9uIGxpbWl0cyBzY3JvbGwgYWN0aW9ucyB0byBwcm92aWRlIGEgYmV0dGVyIHVzZXIgZXhwZXJpZW5jZS4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZGVzaWduIHRoZSBVSSBsYXlvdXQgd2l0aGluIHRoZSBnaXZlbiBzY3JlZW4gc2l6ZS48XC9wPlxuPFwvbGk+XG48XC91bD5cbjxkaXYgaWQ9XCJOb3RlU2VjdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJzYW1wbGV0YWIgXCIgaWQ9XCJub3RlX3RhYlwiPlxuICAgICAgICA8YnV0dG9uIGlkPVwibm90ZS1udWlcIiAgY2xhc3M9XCJ0YWJsaW5rc1wiIG9uY2xpY2s9XCJvcGVuVGFiU2VjdGlvbihldmVudCwgJ25vdGUtbnVpLWNvbnRlbnQnLCAnTm90ZVNlY3Rpb24nKSBcIj5OVUkgV2lkZ2V0PFwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGlkPVwibm90ZS1iYXNlXCIgY2xhc3M9XCJ0YWJsaW5rc1wiIG9uY2xpY2s9XCJvcGVuVGFiU2VjdGlvbihldmVudCwgJ25vdGUtYmFzZS1jb250ZW50JywgJ05vdGVTZWN0aW9uJykgXCI+V2lkZ2V0PFwvYnV0dG9uPlxuICAgIDxcL2Rpdj5cbiAgICA8ZGl2IGlkPVwibm90ZS1udWktY29udGVudFwiIGNsYXNzPVwidGFiY29udGVudFwiPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZSBjbGFzcz1cIm5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Tm90ZTxcL3N0cm9uZz48XC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gZHJhdyB0aGUgbGF5b3V0LCB5b3UgaGF2ZSB0byB1c2UgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaW5kb3cubWRcIj48Y29kZT5XaW5kb3c8XC9jb2RlPjxcL2E+IGluc3RhbmNlIHJlY2VpdmVkIGZyb20gdGhlIDxjb2RlPk9uQ3JlYXRlPFwvY29kZT4gY2FsbGJhY2suIElmIHlvdSBjcmVhdGUgYWRkaXRpb25hbCB3aW5kb3dzLCB0aGUgc3RhY2sgb2Ygd2lkZ2V0IGFwcGxpY2F0aW9uIHdpbmRvd3MgZ2V0cyBjb3JydXB0ZWQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcGxhdGZvcm0gaGFuZGxlcyB0aGUgd2lkZ2V0IGFwcGxpY2F0aW9uIHdpbmRvdyBpbiBhIHBhcnRpY3VsYXIgd2F5LjxcL3A+XG4gICAgICAgICAgICAgICAgICAgIDxcL2Jsb2NrcXVvdGU+XG4gICAgICAgICAgICAgICAgPFwvdHI+XG4gICAgICAgICAgICA8XC90Ym9keT5cbiAgICAgICAgPFwvdGFibGU+XG4gICAgPFwvZGl2PlxuICAgIDxkaXYgaWQ9XCJub3RlLWJhc2UtY29udGVudFwiIGNsYXNzPVwidGFiY29udGVudFwiPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZSBjbGFzcz1cIm5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPjxzdHJvbmc+Tm90ZTxcL3N0cm9uZz48XC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gZHJhdyB0aGUgVUksIHVzZSBhIHNpbmdsZSB3aW5kb3cgYXMgYSBwcm90ZWN0ZWQgcHJvcGVydHkgb2YgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLkFwcGxpY2F0aW9ucy5XaWRnZXRCYXNlLm1kXCI+VGl6ZW4uQXBwbGljYXRpb25zLldpZGdldEJhc2U8XC9hPiBjbGFzcy4gRG8gbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHdpbmRvd3MuIEEgc3RhY2sgb2Ygd2lkZ2V0IGFwcGxpY2F0aW9uIHdpbmRvd3MgZ2V0cyBjb3JydXB0ZWQsIGJlY2F1c2UgdGhlIHBsYXRmb3JtIGhhbmRsZXMgdGhlIHdpZGdldCBhcHBsaWNhdGlvbiB3aW5kb3cgaW4gYSBzcGVjaWFsIHdheS48XC9wPlxuICAgICAgICAgICAgICAgICAgICA8XC9ibG9ja3F1b3RlPlxuICAgICAgICAgICAgICAgIDxcL3RyPlxuICAgICAgICAgICAgPFwvdGJvZHk+XG4gICAgICAgIDxcL3RhYmxlPlxuICAgIDxcL2Rpdj5cbjxcL2Rpdj5cbjxwPjxhIG5hbWU9XCJ3aWRnZXQtaW5zdGFuY2VzXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC13aWRnZXQtaW5zdGFuY2VzXCI+PGEgaHJlZj1cIiNjb250ZW50LXdpZGdldC1pbnN0YW5jZXNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPldpZGdldCBpbnN0YW5jZXM8XC9oMj5cbjxkaXYgaWQ9XCJWaWV3ZXJTZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInNhbXBsZXRhYiBcIiBpZD1cIm5vdGVfdGFiXCI+XG4gICAgICAgIDxidXR0b24gaWQ9XCJ2aWV3ZXItbnVpXCIgIGNsYXNzPVwidGFibGlua3NcIiBvbmNsaWNrPVwib3BlblRhYlNlY3Rpb24oZXZlbnQsICd2aWV3ZXItbnVpLWNvbnRlbnQnLCAnVmlld2VyU2VjdGlvbicpIFwiPk5VSSBXaWRnZXQ8XC9idXR0b24+XG4gICAgICAgIDxidXR0b24gaWQ9XCJ2aWV3ZXItYmFzZVwiIGNsYXNzPVwidGFibGlua3NcIiBvbmNsaWNrPVwib3BlblRhYlNlY3Rpb24oZXZlbnQsICd2aWV3ZXItYmFzZS1jb250ZW50JywgJ1ZpZXdlclNlY3Rpb24nKSBcIj5XaWRnZXQ8XC9idXR0b24+XG4gICAgPFwvZGl2PlxuICAgIDxkaXYgaWQ9XCJ2aWV3ZXItbnVpLWNvbnRlbnRcIiBjbGFzcz1cInRhYmNvbnRlbnRcIj5cbiAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgPHA+PGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uTlVJLk5VSVdpZGdldEFwcGxpY2F0aW9uLm1kXCI+PGNvZGU+TlVJV2lkZ2V0QXBwbGljYXRpb248XC9jb2RlPjxcL2E+IG1ha2VzIGRpdmVyc2UgY2xhc3MgaW5zdGFuY2VzIHdoZW5ldmVyIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaWRnZXRWaWV3Lm1kXCI+PGNvZGU+V2lkZ2V0VmlldzxcL2NvZGU+PFwvYT4gcmVxdWVzdHMgZm9yIGEgd2lkZ2V0IGluc3RhbmNlLjxcL3A+XG4gICAgICAgICAgICAgICAgICAgIDxwPlRoZSB3aWRnZXQgaW5zdGFuY2UgaGFzIGl0cyBvd24gbGlmZSBjeWNsZSBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIHdpZGdldCBhcHBsaWNhdGlvbi4gSG93ZXZlciwgdGhlIHdpZGdldCBpbnN0YW5jZSBpcyBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGUgd2lkZ2V0IHZpZXdlciBhcHBsaWNhdGlvbi4gTWFueSB3aWRnZXQgaW5zdGFuY2VzIGNhbiBiZSBydW5uaW5nIG9uIGEgd2lkZ2V0IGFwcGxpY2F0aW9uIHByb2Nlc3MuPFwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGUgY2xhc3M9XCJhbGVydCBhbGVydC1ub3RlXCI+PHNwYW4gY2xhc3M9XCJhbGVydC10aXRsZVwiPjxzcGFuIGNsYXNzPVwiYWxlcnQtdGl0bGUtLWljb25cIj48XC9zcGFuPjxzcGFuIGNsYXNzPVwiYWxlcnQtdGl0bGUtLXRleHRcIj5Ob3RlPFwvc3Bhbj48XC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+IFRoZSBjYXNlIHRvIHVzZSBtYW55IHdpZGdldCBpbnN0YW5jZXMgaW4gb25lIHdpZGdldCBhcHBsaWNhdGlvbiBpcyBrbm93biBhcyBtdWx0aS1pbnN0YW5jZS4gSW4gc29tZSBkZXZpY2VzLCB0aGUgbXVsdGktaW5zdGFuY2UgbWF5IG5vdCBiZSBzdXBwb3J0ZWQuIElmIGEgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgbXVsdGktaW5zdGFuY2UsIGFuIGVycm9yIG1lc3NhZ2UgaXMgZGlzcGxheWVkLjxcL3A+XG4gICAgICAgICAgICAgICAgICAgIDxcL2Jsb2NrcXVvdGU+XG4gICAgICAgICAgICAgICAgICAgIDxwPjxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaWRnZXRWaWV3Lm1kXCI+PGNvZGU+V2lkZ2V0VmlldzxcL2NvZGU+PFwvYT4gc2hvd3MgdGhlIGNvbnRlbnRzIGRyYXduIGJ5IDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaWRnZXQubWRcIj48Y29kZT5XaWRnZXQ8XC9jb2RlPjxcL2E+IG9uIHRoZSBzY3JlZW4uPFwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHA+VG8gc3VtbWFyaXplLCB5b3UgY3JlYXRlIGEgTlVJIFdpZGdldEFwcGxpY2F0aW9uLCBjcmVhdGUgYSBOVUkgV2lkZ2V0VmlldywgYW5kIHVzZSBXaWRnZXQgdG8gdmlldyBsYXlvdXQgb24gdGhlIHNjcmVlbi48XC9wPlxuICAgICAgICAgICAgICAgIDxcL3RyPlxuICAgICAgICAgICAgPFwvdGJvZHk+XG4gICAgICAgIDxcL3RhYmxlPlxuICAgIDxcL2Rpdj5cbiAgICA8ZGl2IGlkPVwidmlld2VyLWJhc2UtY29udGVudFwiIGNsYXNzPVwidGFiY29udGVudFwiPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8cD5UaGUgPGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uQXBwbGljYXRpb25zLldpZGdldEFwcGxpY2F0aW9uLm1kXCI+V2lkZ2V0QXBwbGljYXRpb248XC9hPiBjbGFzcyBwcm92aWRlcyB0aGUgPGNvZGU+V2lkZ2V0QXBwbGljYXRpb24oSURpY3Rpb25hcnkmbHQ7IFR5cGUsIHN0cmluZyAmZ3Q7IHR5cGVJbmZvKTxcL2NvZGU+IGNvbnN0cnVjdG9yLCB0aGF0IGFsbG93cyBhIHdpZGdldCBhcHBsaWNhdGlvbiB0byBoYXZlIG11bHRpcGxlIHdpZGdldCBjbGFzc2VzLiBUaGUgd2lkZ2V0IGFwcGxpY2F0aW9ucyB3aXRoIG11bHRpcGxlIGNsYXNzZXMgY2FuIG1ha2UgZGl2ZXJzZSBjbGFzcyBpbnN0YW5jZXMgd2hlbmV2ZXIgd2lkZ2V0IHZpZXdlciBhcHBsaWNhdGlvbnMsIHN1Y2ggYXMgdGhlIGhvbWUgc2NyZWVuIGFuZCB0aGUgbG9jayBzY3JlZW4sIHJlcXVlc3QgZm9yIGEgd2lkZ2V0IGluc3RhbmNlLjxcL3A+XG4gICAgICAgICAgICAgICAgICAgIDxwPlRoZSB3aWRnZXQgaW5zdGFuY2UgaGFzIGl0cyBvd24gbGlmZSBjeWNsZSBzaW1pbGFyIHRvIHRoZSB3aWRnZXQgYXBwbGljYXRpb24uIEhvd2V2ZXIsIHRoZSB3aWRnZXQgaW5zdGFuY2UgaXMgb25seSBhbiBvYmplY3Qgc2hvd24gYnkgdGhlIHdpZGdldCB2aWV3ZXIgYXBwbGljYXRpb25zLiBNYW55IHdpZGdldCBpbnN0YW5jZXMgY2FuIGJlIHJ1bm5pbmcgb24gdGhlIHNhbWUgd2lkZ2V0IGFwcGxpY2F0aW9uIHByb2Nlc3MuPFwvcD5cbiAgICAgICAgICAgICAgICA8XC90cj5cbiAgICAgICAgICAgIDxcL3Rib2R5PlxuICAgICAgICA8XC90YWJsZT5cbiAgICA8XC9kaXY+XG48XC9kaXY+XG48cD48c3Ryb25nPkZpZ3VyZTogV2lkZ2V0IGluc3RhbmNlczxcL3N0cm9uZz48XC9wPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvd2lkZ2V0X2hvbWVzY3JlZW4ucG5nXCIgYWx0PVwiRWFjaCB3aWRnZXQgYXBwbGljYXRpb24gaGFzIDEgb3IgbW9yZSB3aWRnZXQgaW5zdGFuY2VzXCIgXC8+PFwvcD5cbjxwPjxhIG5hbWU9XCJsaWZlLWN5Y2xlXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC13aWRnZXQtaW5zdGFuY2Utc3RhdGVzLWFuZC1ldmVudHNcIj48YSBocmVmPVwiI2NvbnRlbnQtd2lkZ2V0LWluc3RhbmNlLXN0YXRlcy1hbmQtZXZlbnRzXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5XaWRnZXQgaW5zdGFuY2Ugc3RhdGVzIGFuZCBldmVudHM8XC9oMj5cbjxwPlRoZSBmb2xsb3dpbmcgZmlndXJlIGlsbHVzdHJhdGVzIHRoZSB3aWRnZXQgaW5zdGFuY2Ugc3RhdGVzIGR1cmluZyB0aGUgaW5zdGFuY2UgbGlmZSBjeWNsZTo8XC9wPlxuPHVsPlxuPGxpPldoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGluIHRoZSBSZWFkeSBzdGF0ZSwgdGhlIGluc3RhbmNlIGRvZXMgbm90IGV4aXN0LjxcL2xpPlxuPGxpPldoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQsIGl0IGlzIGluIHRoZSBDcmVhdGVkIHN0YXRlLjxcL2xpPlxuPGxpPldoZW4gdGhlIGluc3RhbmNlIGlzIHZpc2libGUsIGl0IGlzIGluIHRoZSBSdW5uaW5nIHN0YXRlLjxcL2xpPlxuPGxpPldoZW4gdGhlIGluc3RhbmNlIGlzIGludmlzaWJsZSwgaXQgaXMgaW4gdGhlIFBhdXNlZCBzdGF0ZS48XC9saT5cbjxsaT5XaGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQsIGl0IGlzIGluIHRoZSBEZXN0cm95ZWQgc3RhdGUuPFwvbGk+XG48XC91bD5cbjxwPjxzdHJvbmc+RmlndXJlOiBXaWRnZXQgaW5zdGFuY2UgbGlmZSBjeWNsZTxcL3N0cm9uZz48XC9wPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvY3NoYXJwX3dpZGdldGFwcGxpY2F0aW9uLnBuZ1wiIGFsdD1cIldpZGdldCBpbnN0YW5jZSBsaWZlIGN5Y2xlXCIgXC8+PFwvcD5cbjxkaXYgaWQ9XCJDbGFzc1NlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwic2FtcGxldGFiIFwiIGlkPVwibm90ZV90YWJcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImNsYXNzLW51aVwiICBjbGFzcz1cInRhYmxpbmtzXCIgb25jbGljaz1cIm9wZW5UYWJTZWN0aW9uKGV2ZW50LCAnY2xhc3MtbnVpLWNvbnRlbnQnLCAnQ2xhc3NTZWN0aW9uJykgXCI+TlVJIFdpZGdldDxcL2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImNsYXNzLWJhc2VcIiBjbGFzcz1cInRhYmxpbmtzXCIgb25jbGljaz1cIm9wZW5UYWJTZWN0aW9uKGV2ZW50LCAnY2xhc3MtYmFzZS1jb250ZW50JywgJ0NsYXNzU2VjdGlvbicpIFwiPldpZGdldDxcL2J1dHRvbj5cbiAgICA8XC9kaXY+XG4gICAgPGRpdiBpZD1cImNsYXNzLW51aS1jb250ZW50XCIgY2xhc3M9XCJ0YWJjb250ZW50XCI+XG4gICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICA8dHI+XG48c3BhbiBzdHlsZT1cImRpc3BsYXk6YmxvY2tcIj5cbjxwPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIGNhbGxiYWNrcyB5b3UgY2FuIHVzZSBhcyB0aGUgaW5zdGFuY2Ugc3RhdGUgY2hhbmdlcy48XC9wPlxuPHA+PHN0cm9uZz5UYWJsZTogSW5zdGFuY2Ugc3RhdGUgY2hhbmdlIGNhbGxiYWNrczxcL3N0cm9uZz48XC9wPlxuPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3JpZCB0YWJsZS1maXhlZFwiIGRhdGEtdGFibGUtY29udGFpbmVyPVwiZGF0YS10YWJsZS1jb250YWluZXJcIj48dGFibGU+XG48dGhlYWQ+XG48dHI+XG48dGg+Q2FsbGJhY2s8XC90aD5cbjx0aD5EZXNjcmlwdGlvbjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keT5cbjx0cj5cbjx0ZD48Y29kZT5PbkNyZWF0ZSgpPFwvY29kZT48XC90ZD5cbjx0ZD5DYWxsZWQgYWZ0ZXIgdGhlIHdpZGdldCBpbnN0YW5jZSBpcyBjcmVhdGVkLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGNvZGU+T25UZXJtaW5hdGUoKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIGJlZm9yZSB0aGUgd2lkZ2V0IGluc3RhbmNlIGlzIGRlc3Ryb3llZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxjb2RlPk9uUGF1c2UoKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIHdoZW4gdGhlIHdpZGdldCBpcyBpbnZpc2libGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48Y29kZT5PblJlc3VtZSgpPFwvY29kZT48XC90ZD5cbjx0ZD5DYWxsZWQgd2hlbiB0aGUgd2lkZ2V0IGlzIHZpc2libGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48Y29kZT5PblJlc2l6ZSgpPFwvY29kZT48XC90ZD5cbjx0ZD5DYWxsZWQgYmVmb3JlIHRoZSB3aWRnZXQgc2l6ZSBpcyBjaGFuZ2VkLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGNvZGU+T25VcGRhdGUoKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIHdoZW4gYW4gZXZlbnQgZm9yIHVwZGF0aW5nIHRoZSB3aWRnZXQgaXMgcmVjZWl2ZWQuPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+WW91IGNhbiBkZWNsYXJlIGEgd2lkZ2V0IGNsYXNzIGJ5IGluaGVyaXRpbmcgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaWRnZXQubWRcIj5UaXplbi5OVUkuV2lkZ2V0PFwvYT4gY2xhc3MuIEZvciBleGFtcGxlOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Y2xhc3M8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk15V2lkZ2V0PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gOiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRpemVuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5OVUk8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpZGdldDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PbkNyZWF0ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+c3RyaW5nPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50SW5mbzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+LCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpbmRvdzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+d2luZG93PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25UZXJtaW5hdGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+Y29udGVudEluZm88XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XaWRnZXQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRlcm1pbmF0aW9uVHlwZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+dHlwZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KSB7fTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnB1YmxpYzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+b3ZlcnJpZGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZvaWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk9uUGF1c2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPigpIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25SZXN1bWU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPigpIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25SZXNpemU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpbmRvdzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+d2luZG93PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25VcGRhdGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+Y29udGVudEluZm88XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5pbnQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPmlzRm9yY2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPikge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL3NwYW4+XG4gICAgICAgICAgICAgICAgPFwvdHI+XG4gICAgICAgICAgICA8XC90Ym9keT5cbiAgICAgICAgPFwvdGFibGU+XG4gICAgPFwvZGl2PlxuICAgIDxkaXYgaWQ9XCJjbGFzcy1iYXNlLWNvbnRlbnRcIiBjbGFzcz1cInRhYmNvbnRlbnRcIj5cbiAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0cj5cbjxzcGFuIHN0eWxlPVwiZGlzcGxheTpibG9ja1wiPlxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyB0aGUgY2FsbGJhY2tzIHlvdSBjYW4gdXNlIGFzIHRoZSBpbnN0YW5jZSBzdGF0ZSBjaGFuZ2VzLjxcL3A+XG48cD48c3Ryb25nPlRhYmxlOiBJbnN0YW5jZSBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tzPFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byBncmlkIHRhYmxlLWZpeGVkXCIgZGF0YS10YWJsZS1jb250YWluZXI9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiPjx0YWJsZT5cbjx0aGVhZD5cbjx0cj5cbjx0aD5DYWxsYmFjazxcL3RoPlxuPHRoPkRlc2NyaXB0aW9uPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5PlxuPHRyPlxuPHRkPjxjb2RlPk9uQ3JlYXRlKCk8XC9jb2RlPjxcL3RkPlxuPHRkPkNhbGxlZCBhZnRlciB0aGUgd2lkZ2V0IGluc3RhbmNlIGlzIGNyZWF0ZWQuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48Y29kZT5PbkRlc3Ryb3koKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIGJlZm9yZSB0aGUgd2lkZ2V0IGluc3RhbmNlIGlzIGRlc3Ryb3llZC48XC90ZD5cbjxcL3RyPlxuPHRyPlxuPHRkPjxjb2RlPk9uUGF1c2UoKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIHdoZW4gdGhlIHdpZGdldCBpcyBpbnZpc2libGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48Y29kZT5PblJlc3VtZSgpPFwvY29kZT48XC90ZD5cbjx0ZD5DYWxsZWQgd2hlbiB0aGUgd2lkZ2V0IGlzIHZpc2libGUuPFwvdGQ+XG48XC90cj5cbjx0cj5cbjx0ZD48Y29kZT5PblJlc2l6ZSgpPFwvY29kZT48XC90ZD5cbjx0ZD5DYWxsZWQgYmVmb3JlIHRoZSB3aWRnZXQgc2l6ZSBpcyBjaGFuZ2VkLjxcL3RkPlxuPFwvdHI+XG48dHI+XG48dGQ+PGNvZGU+T25VcGRhdGUoKTxcL2NvZGU+PFwvdGQ+XG48dGQ+Q2FsbGVkIHdoZW4gYW4gZXZlbnQgZm9yIHVwZGF0aW5nIHRoZSB3aWRnZXQgaXMgcmVjZWl2ZWQuPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+PFwvZGl2PlxuPHA+WW91IGNhbiBkZWNsYXJlIGEgd2lkZ2V0IGNsYXNzIGJ5IGluaGVyaXRpbmcgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLkFwcGxpY2F0aW9ucy5XaWRnZXRCYXNlLm1kXCI+VGl6ZW4uQXBwbGljYXRpb25zLldpZGdldEJhc2U8XC9hPiBjbGFzcy4gRm9yIGV4YW1wbGU6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5jbGFzczxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+TXlXaWRnZXQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA6IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+V2lkZ2V0QmFzZTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PbkNyZWF0ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QnVuZGxlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj53PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25QYXVzZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KCkge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PblJlc3VtZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KCkge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PblJlc2l6ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj53PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pIHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25VcGRhdGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkJ1bmRsZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+Y29udGVudDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+LCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPmJvb2w8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPmlzRm9yY2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPikge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PbkRlc3Ryb3k8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpZGdldEJhc2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpZGdldERlc3Ryb3lUeXBlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5yZWFzb248XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5CdW5kbGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPmNvbnRlbnQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPikge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL3NwYW4+XG4gICAgICAgICAgICAgICAgPFwvdHI+XG4gICAgICAgICAgICA8XC90Ym9keT5cbiAgICAgICAgPFwvdGFibGU+XG4gICAgPFwvZGl2PlxuPFwvZGl2PlxuPGgyIGlkPVwiY29udGVudC1wcmVyZXF1aXNpdGVzXCI+PGEgaHJlZj1cIiNjb250ZW50LXByZXJlcXVpc2l0ZXNcIiBjbGFzcz1cImhlYWRpbmctcGVybWFsaW5rXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgdGl0bGU9XCJQZXJtYWxpbmtcIj5cdTAwYjY8XC9hPlByZXJlcXVpc2l0ZXM8XC9oMj5cbjxwPlRvIGVuYWJsZSB5b3VyIGFwcGxpY2F0aW9uIHRvIHVzZSB0aGUgd2lkZ2V0IGZ1bmN0aW9uYWxpdHksIHlvdSBoYXZlIHRvIG1vZGlmeSBhcHBsaWNhdGlvbiBtYW5pZmVzdCBmaWxlIGJ5IGFkZGluZyBwcm9wZXIgcHJpdmlsZWdlczo8XC9wPlxuPGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1YTUxcIj4mbHQ7cHJpdmlsZWdlcyZndDtcbiAgICAmbHQ7cHJpdmlsZWdlJmd0O2h0dHA6XC9cL3RpemVuLm9yZ1wvcHJpdmlsZWdlXC93aWRnZXQudmlld2VyJmx0O1wvcHJpdmlsZWdlJmd0O1xuICAgICZsdDtwcml2aWxlZ2UmZ3Q7aHR0cDpcL1wvdGl6ZW4ub3JnXC9wcml2aWxlZ2VcL2FwcG1hbmFnZXIubGF1bmNoJmx0O1wvcHJpdmlsZWdlJmd0O1xuJmx0O1wvcHJpdmlsZWdlcyZndDtcbjxcL2NvZGU+XG48cD48YSBuYW1lPVwiY3JlYXRlLXdpZGdldFwiPjxcL2E+PFwvcD5cbjxoMiBpZD1cImNvbnRlbnQtY3JlYXRlLWEtd2lkZ2V0LWFwcGxpY2F0aW9uXCI+PGEgaHJlZj1cIiNjb250ZW50LWNyZWF0ZS1hLXdpZGdldC1hcHBsaWNhdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+Q3JlYXRlIGEgd2lkZ2V0IGFwcGxpY2F0aW9uPFwvaDI+XG48ZGl2IGlkPVwiQ29kZVNlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwic2FtcGxldGFiIFwiIGlkPVwiY29kZV90YWJcIj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImNvZGUtbnVpXCIgIGNsYXNzPVwidGFibGlua3NcIiBvbmNsaWNrPVwib3BlblRhYlNlY3Rpb24oZXZlbnQsICdjb2RlLW51aS1jb250ZW50JywgJ0NvZGVTZWN0aW9uJykgXCI+TlVJIFdpZGdldDxcL2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cImNvZGUtYmFzZVwiIGNsYXNzPVwidGFibGlua3NcIiBvbmNsaWNrPVwib3BlblRhYlNlY3Rpb24oZXZlbnQsICdjb2RlLWJhc2UtY29udGVudCcsICdDb2RlU2VjdGlvbicpIFwiPldpZGdldDxcL2J1dHRvbj5cbiAgICA8XC9kaXY+XG4gICAgPGRpdiBpZD1cImNvZGUtbnVpLWNvbnRlbnRcIiBjbGFzcz1cInRhYmNvbnRlbnRcIj5cbiAgICAgICAgPHRhYmxlPlxuICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIDx0cj5cbjxzcGFuIHN0eWxlPVwiZGlzcGxheTpibG9ja1wiPlxuPG9sPlxuPGxpPlxuPHA+VG8gdXNlIHRoZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIG9mIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5tZFwiPlRpemVuLk5VSTxcL2E+IG5hbWVzcGFjZSwgaW5jbHVkZSBpdCBpbiB5b3VyIGFwcGxpY2F0aW9uOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dXNpbmc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRpemVuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5OVUk8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5EZWZpbmUgeW91ciB3aWRnZXQgYXBwbGljYXRpb24gY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBmcm9tIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5OVUlXaWRnZXRBcHBsaWNhdGlvbi5tZFwiPk5VSVdpZGdldEFwcGxpY2F0aW9uPFwvYT4gY2xhc3M6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5jbGFzczxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+UHJvZ3JhbTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDogPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5OVUlXaWRnZXRBcHBsaWNhdGlvbjxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxsaT5cbjxwPlRoZSB3aWRnZXQgYXBwbGljYXRpb24gc3RhcnRzIHdpdGggPGNvZGU+TWFpbigpPFwvY29kZT4sIHdoaWNoIGNyZWF0ZXMgYW5kIGluaXRpYWxpemVzIHRoZSBhcHBsaWNhdGlvbi4gPGNvZGU+UnVuKCk8XC9jb2RlPiBtZXRob2Qgb2YgPGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uTlVJLk5VSVdpZGdldEFwcGxpY2F0aW9uLm1kXCI+TlVJV2lkZ2V0QXBwbGljYXRpb248XC9hPiBjbGFzcyBpcyB1c2VkIHRvIHN0YXJ0IHRoZSBhcHBsaWNhdGlvbiBldmVudCBsb29wLiA8Y29kZT5OVUlXaWRnZXRBcHBsaWNhdGlvbjxcL2NvZGU+IGNsYXNzIHByb3ZpZGVzIHRoZSB0d28gZm9sbG93aW5nIGtpbmRzIG9mIGNvbnN0cnVjdG9yczo8XC9wPlxuPHVsPlxuPGxpPkZvciB1c2luZyB0aGUgPGNvZGU+TlVJV2lkZ2V0QXBwbGljYXRpb24oVHlwZSB0eXBlKTxcL2NvZGU+IGNvbnN0cnVjdG9yLCBpbiBjYXNlIHRoZSB3aWRnZXQgYXBwbGljYXRpb24ncyBJRCBpcyB0aGUgc2FtZSBhcyB0aGUgYXBwbGljYXRpb24gSUQ6PFwvbGk+XG48XC91bD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5zdGF0aWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZvaWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk1haW48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+W10gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5hcmdzPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZhcjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+YXBwPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5uZXc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlByb2dyYW08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnR5cGVvZjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+TXlXaWRnZXQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPikpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICBhcHAuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5SdW48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPihhcmdzKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjx1bD5cbjxsaT5Gb3IgdXNpbmcgdGhlIDxjb2RlPk5VSVdpZGdldEFwcGxpY2F0aW9uKERpY3Rpb25hcnkmbHQ7IFR5cGUsIHN0cmluZyAmZ3Q7IHR5cGVJbmZvKTxcL2NvZGU+IGNvbnN0cnVjdG9yLCBpbiBjYXNlIHlvdXIgd2lkZ2V0IGFwcGxpY2F0aW9ucyBoYXZlIG11bHRpcGxlIHdpZGdldCBjbGFzc2VzLiBGb3IgbXVsdGlwbGUgaW5zdGFuY2VzLCBhZGQgPGNvZGU+Jmx0O3dpZGdldC1jbGFzcyZndDs8XC9jb2RlPiBpbiBYTUwgYXMgZm9sbG93czo8XC9saT5cbjxcL3VsPlxuPGNvZGUgY2xhc3M9XCJsYW5ndWFnZS1YTUxcIj4gICAgJmx0O3dpZGdldC1jbGFzcyBjbGFzc2lkPSZxdW90O3NlY29uZCZxdW90OyB1cGRhdGUtcGVyaW9kPSZxdW90OzAmcXVvdDsmZ3Q7XG4gICAgJmx0O3N1cHBvcnQtc2l6ZSBwcmV2aWV3PSZxdW90O1dpZGdldC5wbmcmcXVvdDsmZ3Q7MngyJmx0O1wvc3VwcG9ydC1zaXplJmd0O1xuICAgICZsdDtcL3dpZGdldC1jbGFzcyZndDtcbjxcL2NvZGU+XG48cD5Zb3UgY2FuIHRoZW4gbW9kaWZ5IHRoZSBjb2RlIGFzIGZvbGxvd3M6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5zdGF0aWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZvaWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk1haW48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+W10gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5hcmdzPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkRpY3Rpb25hcnk8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiZsdDs8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlN5c3RlbTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+LjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+VHlwZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+LCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+Jmd0OyA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPndpZGdldFNldDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+bmV3PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5EaWN0aW9uYXJ5PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4mbHQ7PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5UeXBlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+c3RyaW5nPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4mZ3Q7KCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIHdpZGdldFNldC48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkFkZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dHlwZW9mPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5NeVdpZGdldDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KSwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4mcXVvdDtzZWNvbmRAb3JnLnRpemVuLmV4YW1wbGUuV2lkZ2V0VGVtcGxhdGUmcXVvdDs8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPik7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dmFyPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5hcHA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm5ldzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+UHJvZ3JhbTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KHdpZGdldFNldCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIGFwcC48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlJ1bjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KGFyZ3MpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPn08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5EZWZpbmUgeW91ciB3aWRnZXQgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBmcm9tIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLk5VSS5XaWRnZXQubWRcIj5XaWRnZXQ8XC9hPjo8XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPmNsYXNzPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5NeVdpZGdldDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDogPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XaWRnZXQ8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5PdmVycmlkZSBldmVudCBjYWxsYmFjayBtZXRob2RzIG9mIHlvdXIgbmV3IGNsYXNzOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Y2xhc3M8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk15V2lkZ2V0PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gOiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRpemVuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5OVUk8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpZGdldDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPns8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHJvdGVjdGVkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25DcmVhdGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnN0cmluZzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+Y29udGVudEluZm88XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XaW5kb3c8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPndpbmRvdzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZBNzM3RDstLXNoaWtpLWRhcms6IzZBNzM3RFwiPiAgICBcL1wvXC8gQ3JlYXRlIHRoZSBVSTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZBNzM3RDstLXNoaWtpLWRhcms6IzZBNzM3RFwiPiAgICBcL1wvXC8gLi4uLjxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAwNUNDNTstLXNoaWtpLWRhcms6Izc5QjhGRlwiPmJhc2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk9uQ3JlYXRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oY29udGVudEluZm8sIHdpbmRvdyk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICB9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+fTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxsaT5cbjxwPkRyYXdpbmcgdGhlIHdpZGdldCBVSSBpbiA8Y29kZT5PbkNyZWF0ZSgpPFwvY29kZT46PFwvcD5cbjxwPkluaXRpYWxpemUgcmVzb3VyY2VzIGZvciB0aGlzIHdpZGdldCBpbnN0YW5jZSBhbmQgZHJhdyB0aGUgY29udGVudCBvbiB0aGUgc2NyZWVuLjxcL3A+XG48cD5UaGUgd2lkZ2V0IFVJIGlzIGRyYXduIGluIHRoZSA8Y29kZT5PbkNyZWF0ZSgpPFwvY29kZT4gY2FsbGJhY2sgb2YgeW91ciB3aWRnZXQgY2xhc3M6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wcm90ZWN0ZWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PbkNyZWF0ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+c3RyaW5nPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50SW5mbzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+LCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPldpbmRvdzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+d2luZG93PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlZpZXc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPnJvb3RWaWV3PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5uZXc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlZpZXc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPigpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICByb290Vmlldy5CYWNrZ3JvdW5kQ29sb3IgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gQ29sb3IuV2hpdGU7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIHJvb3RWaWV3LlNpemUyRCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiB3aW5kb3cuU2l6ZTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgcm9vdFZpZXcuUGl2b3RQb2ludCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiBQaXZvdFBvaW50LkNlbnRlcjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgd2luZG93LjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+R2V0RGVmYXVsdExheWVyPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oKS48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkFkZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KHJvb3RWaWV3KTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+VGV4dExhYmVsPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5zYW1wbGVMYWJlbDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+bmV3PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5UZXh0TGFiZWw8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPig8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiZxdW90O0hlbGxvIFdvcmxkISZxdW90OzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgc2FtcGxlTGFiZWwuRm9udEZhbWlseSA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiZxdW90O1NhbXN1bmdPbmVVSSA1MDAmcXVvdDs8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgc2FtcGxlTGFiZWwuUG9pbnRTaXplIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+NzE8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgc2FtcGxlTGFiZWwuVGV4dENvbG9yIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+PTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IENvbG9yLkJsYWNrOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICBzYW1wbGVMYWJlbC5TaXplV2lkdGggPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj49PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMDVDQzU7LS1zaGlraS1kYXJrOiM3OUI4RkZcIj4yMDA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgc2FtcGxlTGFiZWwuUGl2b3RQb2ludCA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPj08XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiBQaXZvdFBvaW50LkNlbnRlcjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIHJvb3RWaWV3LjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QWRkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oc2FtcGxlTGFiZWwpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPn08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48XC9vbD5cbjxcL3NwYW4+XG4gICAgICAgICAgICAgICAgPFwvdHI+XG4gICAgICAgICAgICA8XC90Ym9keT5cbiAgICAgICAgPFwvdGFibGU+XG4gICAgPFwvZGl2PlxuICAgIDxkaXYgaWQ9XCJjb2RlLWJhc2UtY29udGVudFwiIGNsYXNzPVwidGFiY29udGVudFwiPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgPHRyPlxuPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmJsb2NrXCI+XG48cD5UaGUgd2lkZ2V0IGFwcGxpY2F0aW9uIHN0YXJ0cyB3aXRoIHRoZSA8Y29kZT5NYWluKCk8XC9jb2RlPiBmdW5jdGlvbiwgd2hpY2ggY3JlYXRlcyBhbmQgaW5pdGlhbGl6ZXMgdGhlIGFwcGxpY2F0aW9uLiBUaGUgPGNvZGU+UnVuKCk8XC9jb2RlPiBtZXRob2Qgb2YgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLkFwcGxpY2F0aW9ucy5XaWRnZXRBcHBsaWNhdGlvbi5tZFwiPlRpemVuLkFwcGxpY2F0aW9ucy5XaWRnZXRBcHBsaWNhdGlvbjxcL2E+IGNsYXNzIGlzIHVzZWQgdG8gc3RhcnQgdGhlIGFwcGxpY2F0aW9uIGV2ZW50IGxvb3AuIFRoZSA8Y29kZT5UaXplbi5BcHBsaWNhdGlvbnMuV2lkZ2V0QXBwbGljYXRpb248XC9jb2RlPiBjbGFzcyBwcm92aWRlcyAyIGtpbmRzIG9mIGNvbnN0cnVjdG9yczo8XC9wPlxuPHVsPlxuPGxpPklmIHlvdSBjcmVhdGUgdGhlIHdpZGdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSA8Y29kZT5XaWRnZXRBcHBsaWNhdGlvbihUeXBlIHR5cGUpPFwvY29kZT4gY29uc3RydWN0b3IsIHRoYXQgd2lkZ2V0IGFwcGxpY2F0aW9uJ3MgSUQgaXMgdGhlIHNhbWUgYXMgdGhlIGFwcGxpY2F0aW9uIElELjxcL2xpPlxuPGxpPlVzaW5nIHRoZSA8Y29kZT5XaWRnZXRBcHBsaWNhdGlvbihJRGljdGlvbmFyeSZsdDtUeXBlLCBzdHJpbmcmZ3Q7IHR5cGVJbmZvKTxcL2NvZGU+IGNvbnN0cnVjdG9yLCB5b3UgY2FuIG1ha2Ugd2lkZ2V0IGFwcGxpY2F0aW9ucyB3aXRoIG11bHRpcGxlIHdpZGdldCBjbGFzc2VzLjxcL2xpPlxuPFwvdWw+XG48b2w+XG48bGk+XG48cD5UbyB1c2UgdGhlIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgb2YgdGhlIDxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLkFwcGxpY2F0aW9ucy5tZFwiPlRpemVuLkFwcGxpY2F0aW9uczxcL2E+IG5hbWVzcGFjZSwgaW5jbHVkZSBpdCBpbiB5b3VyIGFwcGxpY2F0aW9uOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dXNpbmc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPlRpemVuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5BcHBsaWNhdGlvbnM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPjs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5EZWZpbmUgeW91ciB3aWRnZXQgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBmcm9tIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5BcHBsaWNhdGlvbnMuV2lkZ2V0QmFzZS5tZFwiPlRpemVuLkFwcGxpY2F0aW9ucy5XaWRnZXRCYXNlPFwvYT4gY2xhc3M6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5jbGFzczxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+TXlXaWRnZXQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA6IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+V2lkZ2V0QmFzZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IHt9PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL2xpPlxuPGxpPlxuPHA+T3ZlcnJpZGUgdGhlIGV2ZW50IGNhbGxiYWNrIG1ldGhvZHMgb2YgeW91ciBuZXcgY2xhc3M6PFwvcD5cbjx1bD5cbjxsaT5cbjxwPlRoZSA8Y29kZT5PbkNyZWF0ZSgpPFwvY29kZT4gY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHdpZGdldCBpbnN0YW5jZSBpcyBjcmVhdGVkLjxcL3A+XG48cD5Jbml0aWFsaXplIHJlc291cmNlcyBmb3IgdGhpcyB3aWRnZXQgaW5zdGFuY2UgYW5kIDxhIGhyZWY9XCIjZHJhd193aW5kb3dcIj5kcmF3IHRoZSBVSTxcL2E+LiBJZiBidW5kbGUgY29udGVudCBpcyBub3QgPGNvZGU+TlVMTDxcL2NvZGU+LCByZXN0b3JlIHRoZSBwcmV2aW91cyBzdGF0dXM6PFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PbkNyZWF0ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QnVuZGxlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj53PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+aW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnRyeTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICB7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgICAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAwNUNDNTstLXNoaWtpLWRhcms6Izc5QjhGRlwiPmJhc2U8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPi48XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk9uQ3JlYXRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oY29udGVudCwgdywgaCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkE3MzdEOy0tc2hpa2ktZGFyazojNkE3MzdEXCI+ICAgICAgICBcL1wvXC8gUmVjb3ZlciB0aGUgcHJldmlvdXMgc3RhdHVzIHdpdGggdGhlIGJ1bmRsZSBvYmplY3Q8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiM2QTczN0Q7LS1zaGlraS1kYXJrOiM2QTczN0RcIj4gICAgICAgIFwvXC9cLyBDcmVhdGUgdGhlIFVJPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIH08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5jYXRjaDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICg8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPkV4Y2VwdGlvbjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICB7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgICAgICBMb2cuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XYXJuPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oX2xvZ1RhZywgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4mcXVvdDtleGNlcHRpb24gJnF1b3Q7PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj4rPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gZSk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ICAgIH08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL2xpPlxuPGxpPlxuPHA+VGhlIDxjb2RlPk9uRGVzdHJveSgpPFwvY29kZT4gY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHdpZGdldCBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuPFwvcD5cbjxwPlJlbGVhc2UgYWxsIHdpZGdldCByZXNvdXJjZXMuIElmIHRoZSA8Y29kZT5yZWFzb248XC9jb2RlPiBmb3IgdGhlIHRlcm1pbmF0aW9uIGlzIG5vdCA8Y29kZT5XaWRnZXRCYXNlLldpZGdldERlc3Ryb3lUeXBlLlBlcm1hbmVudDxcL2NvZGU+LCBzdG9yZSB0aGUgY3VycmVudCBzdGF0dXMgd2l0aCB0aGUgaW5jb21pbmcgYnVuZGxlLjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25EZXN0cm95PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XaWRnZXRCYXNlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5XaWRnZXREZXN0cm95VHlwZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+cmVhc29uPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QnVuZGxlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4pPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+ezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPmlmPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gKHJlYXNvbiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiE9PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gV2lkZ2V0QmFzZS5XaWRnZXREZXN0cm95VHlwZS5QZXJtYW5lbnQpPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkE3MzdEOy0tc2hpa2ktZGFyazojNkE3MzdEXCI+ICAgICAgICBcL1wvXC8gU2F2ZSB0aGUgY3VycmVudCBzdGF0dXMgYXQgdGhlIGJ1bmRsZSBvYmplY3Q8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj48XC9jb2RlPjxcL3ByZT5cbjxcL2xpPlxuPGxpPlxuPHA+VGhlIDxjb2RlPk9uUGF1c2UoKTxcL2NvZGU+IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB3aWRnZXQgaW5zdGFuY2UgaXMgcGF1c2VkLjxcL3A+XG48cD5UYWtlIHRoZSBuZWNlc3NhcnkgYWN0aW9ucyB3aGVuIHRoZSB3aWRnZXQgaW5zdGFuY2UgYmVjb21lcyBpbnZpc2libGUuIFRoZSBmcmFtZXdvcmsgY2FuIGRlc3Ryb3kgYSBwYXVzZWQgd2lkZ2V0IGluc3RhbmNlLjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+cHVibGljPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5vdmVycmlkZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+dm9pZDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+T25QYXVzZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KCkge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5UaGUgPGNvZGU+T25SZXN1bWUoKTxcL2NvZGU+IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB3aWRnZXQgaW5zdGFuY2UgaXMgcmVzdW1lZC48XC9wPlxuPHA+VGFrZSB0aGUgbmVjZXNzYXJ5IGFjdGlvbnMgd2hlbiB0aGUgd2lkZ2V0IGluc3RhbmNlIGJlY29tZXMgdmlzaWJsZS48XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnB1YmxpYzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+b3ZlcnJpZGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZvaWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk9uUmVzdW1lPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oKSB7fTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxsaT5cbjxwPlRoZSA8Y29kZT5PblJlc2l6ZSgpPFwvY29kZT4gY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGJlZm9yZSB0aGUgd2lkZ2V0IGluc3RhbmNlIGlzIHJlc2l6ZWQuPFwvcD5cbjxwPlRha2UgdGhlIG5lY2Vzc2FyeSBhY3Rpb25zIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgc2l6ZS48XC9wPlxuPHByZSBjbGFzcz1cInNoaWtpIHNoaWtpLXRoZW1lcyBnaXRodWItbGlnaHQgZ2l0aHViLWRhcmtcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I2ZmZjstLXNoaWtpLWRhcmstYmc6IzI0MjkyZTtjb2xvcjojMjQyOTJlOy0tc2hpa2ktZGFyazojZTFlNGU4O1wiPjxjb2RlPjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnB1YmxpYzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+b3ZlcnJpZGU8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPnZvaWQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPk9uUmVzaXplPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4oPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5pbnQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPnc8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiwgPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5pbnQ8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzZGNDJDMTstLXNoaWtpLWRhcms6I0IzOTJGMFwiPmg8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPikge308XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPFwvbGk+XG48bGk+XG48cD5UaGUgPGNvZGU+T25VcGRhdGUoKTxcL2NvZGU+IGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIGEgd2lkZ2V0IHVwZGF0ZSBldmVudCBpcyByZWNlaXZlZC48XC9wPlxuPHA+VGFrZSB0aGUgbmVjZXNzYXJ5IGFjdGlvbnMgZm9yIHRoZSB3aWRnZXQgdXBkYXRlLiBJZiB0aGUgPGNvZGU+aXNGb3JjZTxcL2NvZGU+IHBhcmFtZXRlciBpcyA8Y29kZT50cnVlPFwvY29kZT4sIHRoZSB3aWRnZXQgY2FuIGJlIHVwZGF0ZWQgZXZlbiBpbiB0aGUgcGF1c2Ugc3RhdGUuPFwvcD5cbjxwcmUgY2xhc3M9XCJzaGlraSBzaGlraS10aGVtZXMgZ2l0aHViLWxpZ2h0IGdpdGh1Yi1kYXJrXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7LS1zaGlraS1kYXJrLWJnOiMyNDI5MmU7Y29sb3I6IzI0MjkyZTstLXNoaWtpLWRhcms6I2UxZTRlODtcIj48Y29kZT48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj5wdWJsaWM8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPm92ZXJyaWRlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj52b2lkPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5PblVwZGF0ZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+QnVuZGxlPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiM2RjQyQzE7LS1zaGlraS1kYXJrOiNCMzkyRjBcIj5jb250ZW50PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4sIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Ym9vbDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+IDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojNkY0MkMxOy0tc2hpa2ktZGFyazojQjM5MkYwXCI+aXNGb3JjZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMjQyOTJFOy0tc2hpa2ktZGFyazojRTFFNEU4XCI+KSB7fTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxcL3NwYW4+PFwvY29kZT48XC9wcmU+XG48XC9saT5cbjxcL3VsPlxuPFwvbGk+XG48XC9vbD5cbjxwPjxhIG5hbWU9XCJkcmF3X3dpbmRvd1wiPjxcL2E+XG40LiAgVGhlIHdpZGdldCBVSSBpcyBkcmF3biBpbiB0aGUgPGNvZGU+T25DcmVhdGUoKTxcL2NvZGU+IGNhbGxiYWNrIG9mIHlvdXIgd2lkZ2V0IGNsYXNzOjxcL3A+XG48cHJlIGNsYXNzPVwic2hpa2kgc2hpa2ktdGhlbWVzIGdpdGh1Yi1saWdodCBnaXRodWItZGFya1wiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojZmZmOy0tc2hpa2ktZGFyay1iZzojMjQyOTJlO2NvbG9yOiMyNDI5MmU7LS1zaGlraS1kYXJrOiNlMWU0ZTg7XCI+PGNvZGU+PHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+YGBgY3NoYXJwPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+cHVibGljIG92ZXJyaWRlIHZvaWQgT25DcmVhdGUoQnVuZGxlIGNvbnRlbnQsIGludCB3LCBpbnQgaCk8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj57PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgIHRyeTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICB7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICBiYXNlLk9uQ3JlYXRlKGNvbnRlbnQsIHcsIGgpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgQ29uZm9ybWFudCBjb25mb3JtYW50ID0gbmV3IENvbmZvcm1hbnQoV2luZG93KTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgIGNvbmZvcm1hbnQuU2hvdygpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgU2Nyb2xsZXIgc2Nyb2xsZXIgPSBuZXcgU2Nyb2xsZXIoV2luZG93KTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgICAgIEFsaWdubWVudFggPSAtMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgICAgICBBbGlnbm1lbnRZID0gLTEsPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICAgICAgV2VpZ2h0WCA9IDEsPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICAgICAgV2VpZ2h0WSA9IDEsPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICAgICAgU2Nyb2xsQmxvY2sgPSBTY3JvbGxCbG9jay5Ob25lLDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgfTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgIHNjcm9sbGVyLlNob3coKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICBCb3ggYm94ID0gbmV3IEJveChXaW5kb3cpPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICB7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICAgICAgQWxpZ25tZW50WCA9IC0xLDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgICAgIEFsaWdubWVudFkgPSAtMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgICAgICBXZWlnaHRYID0gMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgICAgICBXZWlnaHRZID0gMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgIH07PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICBib3guU2hvdygpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgc2Nyb2xsZXIuU2V0Q29udGVudChib3gpOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgY29uZm9ybWFudC5TZXRDb250ZW50KHNjcm9sbGVyKTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICBCdXR0b24gZXhpdEJ1dHRvbiA9IG5ldyBCdXR0b24oV2luZG93KTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgezxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgICAgIFRleHQgPSAmcXVvdDtFeGl0IFRlc3QmcXVvdDssPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICAgICAgQWxpZ25tZW50WCA9IC0xLDxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgICAgIEFsaWdubWVudFkgPSAtMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgICAgICBXZWlnaHRYID0gMSw8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgICAgICBXZWlnaHRZID0gMTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgfTs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgICAgIGJveC5QYWNrRW5kKGV4aXRCdXR0b24pOzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICAgICAgZXhpdEJ1dHRvbi5TaG93KCk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgIH08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj4gICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKTxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzAzMkY2MjstLXNoaWtpLWRhcms6IzlFQ0JGRlwiPiAgICB7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgICAgICBMb2cuV2FybihfbG9nVGFnLCAmcXVvdDtleGNlcHRpb24gJnF1b3Q7ICsgZSk7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+ICAgIH08XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMzJGNjI7LS1zaGlraS1kYXJrOiM5RUNCRkZcIj59PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDMyRjYyOy0tc2hpa2ktZGFyazojOUVDQkZGXCI+YGBgPFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZsdDtcLzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+c3BhbjxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Jmd0OzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICAgICAgICAgICAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZsdDtcLzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+dHI8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZndDs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgICAgICAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZsdDtcLzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+dGJvZHk8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZndDs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48c3BhbiBzdHlsZT1cImNvbG9yOiMyNDI5MkU7LS1zaGlraS1kYXJrOiNFMUU0RThcIj4gICAgICAgIDxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Jmx0O1wvPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMDVDQzU7LS1zaGlraS1kYXJrOiM3OUI4RkZcIj50YWJsZTxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Jmd0OzxcL3NwYW4+PFwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibGluZVwiPjxzcGFuIHN0eWxlPVwiY29sb3I6IzI0MjkyRTstLXNoaWtpLWRhcms6I0UxRTRFOFwiPiAgICA8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZsdDtcLzxcL3NwYW4+PHNwYW4gc3R5bGU9XCJjb2xvcjojMDA1Q0M1Oy0tc2hpa2ktZGFyazojNzlCOEZGXCI+ZGl2PFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiNENzNBNDk7LS1zaGlraS1kYXJrOiNGOTc1ODNcIj4mZ3Q7PFwvc3Bhbj48XC9zcGFuPlxuPHNwYW4gY2xhc3M9XCJsaW5lXCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojRDczQTQ5Oy0tc2hpa2ktZGFyazojRjk3NTgzXCI+Jmx0O1wvPFwvc3Bhbj48c3BhbiBzdHlsZT1cImNvbG9yOiMwMDVDQzU7LS1zaGlraS1kYXJrOiM3OUI4RkZcIj5kaXY8XC9zcGFuPjxzcGFuIHN0eWxlPVwiY29sb3I6I0Q3M0E0OTstLXNoaWtpLWRhcms6I0Y5NzU4M1wiPiZndDs8XC9zcGFuPjxcL3NwYW4+XG48c3BhbiBjbGFzcz1cImxpbmVcIj48XC9zcGFuPjxcL2NvZGU+PFwvcHJlPlxuPHA+PGEgbmFtZT1cInNoYXJlXCI+PFwvYT48XC9wPlxuPGgyIGlkPVwiY29udGVudC1kYXRhLXNoYXJpbmctYmV0d2Vlbi10aGUtd2lkZ2V0LWFwcGxpY2F0aW9uLWFuZC1vdGhlci1hcHBsaWNhdGlvbnNcIj48YSBocmVmPVwiI2NvbnRlbnQtZGF0YS1zaGFyaW5nLWJldHdlZW4tdGhlLXdpZGdldC1hcHBsaWNhdGlvbi1hbmQtb3RoZXItYXBwbGljYXRpb25zXCIgY2xhc3M9XCJoZWFkaW5nLXBlcm1hbGlua1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHRpdGxlPVwiUGVybWFsaW5rXCI+XHUwMGI2PFwvYT5EYXRhIHNoYXJpbmcgYmV0d2VlbiB0aGUgd2lkZ2V0IGFwcGxpY2F0aW9uIGFuZCBvdGhlciBhcHBsaWNhdGlvbnM8XC9oMj5cbjxwPllvdSBjYW4gc2hhcmUgZGF0YSBiZXR3ZWVuIHdpZGdldCBhcHBsaWNhdGlvbnMgYW5kIFVJIChvciBzZXJ2aWNlKSBhcHBsaWNhdGlvbnMuIEhvd2V2ZXIsIHlvdSBtdXN0IHVuZGVyc3RhbmQgdGhhdCB0aGlzIGtpbmQgb2YgZGF0YSBzaGFyaW5nIGlzIGRlcGVuZGVudCBvbiB0aGUgZmlsZSBzeXN0ZW0uIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgc3lzdGVtIChob21lIHNjcmVlbikgY29udHJvbHMgdGhlIHdpZGdldCBhcHBsaWNhdGlvbiBsaWZlIGN5Y2xlLCB3aGlsZSB0aGUgVUkgYXBwbGljYXRpb24gbGlmZSBjeWNsZSBpcyBtb3N0bHkgZXhwbGljaXRseSBjb250cm9sbGVkIGJ5IHRoZSB1c2VyLjxcL3A+XG48cD5Gb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYSBXZWF0aGVyIGFwcGxpY2F0aW9uIGFuZCBhIFdlYXRoZXIgd2lkZ2V0OjxcL3A+XG48dWw+XG48bGk+VGhlIFdlYXRoZXIgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQgd2hlbiB0aGUgdXNlciBzZWxlY3RzIGl0IGZyb20gdGhlIGFwcGxpY2F0aW9uIGxpc3QuPFwvbGk+XG48bGk+VGhlIHdpZGdldCBpcyBsYXVuY2hlZCB3aGVuIHRoZSBob21lIHNjcmVlbiBpcyBvbiBzY3JlZW4gYW5kIGlzIHRlcm1pbmF0ZWQgd2hlbiB0aGUgaG9tZSBzY3JlZW4gaXMgaGlkZGVuLjxcL2xpPlxuPFwvdWw+XG48cD5BbHRob3VnaCB0aGUgd2lkZ2V0IHdhbnRzIHRvIHNoYXJlIHNvbWUgZGF0YSBmcm9tIHRoZSBXZWF0aGVyIGFwcGxpY2F0aW9uIChzdWNoIGFzIHRoZSB1c2VyJ3MgZmF2b3JpdGUgY2l0eSksIGl0IGlzIGluZWZmZWN0aXZlIGZvciB0aGUgd2lkZ2V0IHRvIGxhdW5jaCB0aGUgV2VhdGhlciBhcHBsaWNhdGlvbiBldmVyeSB0aW1lIHRvIHJldHJpZXZlIHN1Y2ggZGF0YS4gVGhpcyBpbmVmZmljaWVuY3kgbWFrZXMgaXQgZGlmZmljdWx0IHRvIHVzZSB0eXBpY2FsIElQQyBtZWNoYW5pc21zLCBzdWNoIGFzIHNvY2tldHMgYW5kIDxhIGhyZWY9XCIuLlwvLi5cL2V4Y2hhbmdlLWRhdGEtYmV0d2Vlbi1hcHBzXC9tZXNzYWdlLXBvcnQubWRcIj5tZXNzYWdlIHBvcnRzPFwvYT4sIGZvciB3aGljaCBib3RoIHRoZSByZWNlaXZlciBhbmQgc2VuZGVyIHByb2Nlc3NlcyBtdXN0IGJlIGFsaXZlLiBUbyBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24sIHRoZSB3aWRnZXQgYXBwbGljYXRpb24gbXVzdCB1c2UgYSBjb21tdW5pY2F0aW9uIG1ldGhvZCB0aGF0IHN0b3JlcyBkYXRhIHBlcm1hbmVudGx5IHNvbWV3aGVyZSBpbiB0aGUgc3lzdGVtLjxcL3A+XG48cD5JbiB0aGUgVGl6ZW4gcGxhdGZvcm0sIGFwcGxpY2F0aW9ucyBpbiB0aGUgc2FtZSBwYWNrYWdlIChpbmNsdWRpbmcgd2lkZ2V0IGFwcGxpY2F0aW9ucykgY2FuIGFjY2VzcyBmaWxlcyBpbiB0aGUgPGNvZGU+ZGF0YTxcL2NvZGU+IGRpcmVjdG9yeSBvZiB0aGUgcGFja2FnZSBpbnN0YWxsYXRpb24gcGF0aC4gVGhpcyBtZWFucyB0aGF0IHRoZSBVSSAob3Igc2VydmljZSkgYXBwbGljYXRpb24gY2FuIGZpcnN0IHdyaXRlIGZpbGVzIHRvIHRoZSA8Y29kZT5kYXRhPFwvY29kZT4gZGlyZWN0b3J5LCBhbmQgdGhlIHdpZGdldCBjYW4gbGF0ZXIgcmVhZCB0aGVtLCBvciB2aWNlIHZlcnNhLjxcL3A+XG48cD48c3Ryb25nPkZpZ3VyZTogU2hhcmluZyB0aHJvdWdoIHRoZSBkYXRhIGRpcmVjdG9yeTxcL3N0cm9uZz48XC9wPlxuPHA+PGltZyBzcmM9XCJtZWRpYVwvd2lkZ2V0X2RhdGFfc2hhcmUucG5nXCIgYWx0PVwiU2hhcmluZyB0aHJvdWdoIHRoZSBkYXRhIGRpcmVjdG9yeVwiIFwvPjxcL3A+XG48cD5UbyBtYW5hZ2UgZGF0YSB0aHJvdWdoIHRoZSA8Y29kZT5kYXRhPFwvY29kZT4gZGlyZWN0b3J5LCB5b3UgY2FuIHVzZSB0aGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBvZiB0aGUgPGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uQXBwbGljYXRpb25zLlByZWZlcmVuY2UubWRcIj5UaXplbi5BcHBsaWNhdGlvbnMuUHJlZmVyZW5jZTxcL2E+IGNsYXNzIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBrZXktdmFsdWUgcGFpcnMuPFwvcD5cbjxwPklmIGFuIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGNvbXBsZXggY29udHJvbCBvdmVyIGEgd2lkZ2V0LCBzdWNoIGFzIE11c2ljIFBsYXllciwgaXQgbXVzdCBpbXBsZW1lbnQgYSBzZXJ2aWNlIGFwcGxpY2F0aW9uIGluIHRoZSBtaWRkbGUgYW5kIHVzZSBhIGRhdGEgY29udHJvbCB3aXRoIHRoZSBjbGFzc2VzIGFuZCBtZXRob2RzIG9mIHRoZSA8YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5BcHBsaWNhdGlvbnMuRGF0YUNvbnRyb2wubWRcIj5UaXplbi5BcHBsaWNhdGlvbnMuRGF0YUNvbnRyb2w8XC9hPiBuYW1lc3BhY2UuPFwvcD5cbjxwPkZvciBleGFtcGxlLCBhIG11c2ljLXBsYXllci1zZXJ2aWNlIHNlcnZpY2UgYXBwbGljYXRpb24gaXMgbmVlZGVkIHRvIGNvbnRyb2wgdGhlIGF1ZGlvIGRldmljZSwgcHJvY2VzcyBhdWRpbyBmaWxlcywgaGFuZGxlIHBsYXkgYW5kIHN0b3Agc2lnbmFscy4gVGhlIG11c2ljLXBsYXllci11aSBhbmQgbXVzaWMtcGxheWVyLXdpZGdldCBhcHBsaWNhdGlvbnMgZGlzcGxheSB0aGUgVUkgY29udHJvbHMsIHRpdGxlLCBhbGJ1bSBhcnQsIGFuZCBvdGhlciBjb250ZW50IHJldHJpZXZlZCBmcm9tIHRoZSBtdXNpYy1wbGF5ZXItc2VydmljZSBzZXJ2aWNlIGFwcGxpY2F0aW9uLiBUaGUgc2VydmljZSBhcHBsaWNhdGlvbiBjYW4gZXhwb3J0IGl0cyBkYXRhIHVzaW5nIHRoZSBkYXRhIGNvbnRyb2wgdG8gPGEgaHJlZj1cIi4uXC8uLlwvZXhjaGFuZ2UtZGF0YS1iZXR3ZWVuLWFwcHNcL2RhdGEtY29udHJvbC5tZFwiPnByb3ZpZGUgZGF0YSB0byB0aGUgb3RoZXIgYXBwbGljYXRpb25zPFwvYT4gKHdpZGdldCBhbmQgVUkpIHNpbXVsdGFuZW91c2x5LiBUaGUgZm9sbG93aW5nIGZpZ3VyZSBpbGx1c3RyYXRlcyB0aGUgdHlwaWNhbCBkYXRhIGNvbnRyb2wgZmxvd3MgYmV0d2VlbiB0aGUgc2V0IG9mIFVJLCBzZXJ2aWNlLCBhbmQgd2lkZ2V0IGFwcGxpY2F0aW9ucy48XC9wPlxuPHA+PHN0cm9uZz5GaWd1cmU6IFNoYXJpbmcgdGhyb3VnaCBkYXRhIGNvbnRyb2w8XC9zdHJvbmc+PFwvcD5cbjxwPjxpbWcgc3JjPVwibWVkaWFcL3dpZGdldF9kYXRhX2NvbnRyb2xfc2hhcmUucG5nXCIgYWx0PVwiU2hhcmluZyB0aHJvdWdoIGRhdGEgY29udHJvbFwiIFwvPjxcL3A+XG48aDIgaWQ9XCJjb250ZW50LXJlbGF0ZWQtaW5mb3JtYXRpb25cIj48YSBocmVmPVwiI2NvbnRlbnQtcmVsYXRlZC1pbmZvcm1hdGlvblwiIGNsYXNzPVwiaGVhZGluZy1wZXJtYWxpbmtcIiBhcmlhLWhpZGRlbj1cInRydWVcIiB0aXRsZT1cIlBlcm1hbGlua1wiPlx1MDBiNjxcL2E+UmVsYXRlZCBpbmZvcm1hdGlvbjxcL2gyPlxuPHVsPlxuPGxpPkRlcGVuZGVuY2llc1xuPHVsPlxuPGxpPlRpemVuIDQuMCBhbmQgSGlnaGVyPFwvbGk+XG48XC91bD5cbjxcL2xpPlxuPGxpPkFQSSBSZWZlcmVuY2VzXG48dWw+XG48bGk+PGEgaHJlZj1cIlwvYXBwbGljYXRpb25cL2RvdG5ldFwvYXBpXC9UaXplbkZYXC9sYXRlc3RcL2FwaVwvVGl6ZW4uTlVJLk5VSVdpZGdldEFwcGxpY2F0aW9uLm1kXCI+VGl6ZW4uTlVJLk5VSVdpZGdldEFwcGxpY2F0aW9uPFwvYT4gY2xhc3M8XC9saT5cbjxsaT48YSBocmVmPVwiXC9hcHBsaWNhdGlvblwvZG90bmV0XC9hcGlcL1RpemVuRlhcL2xhdGVzdFwvYXBpXC9UaXplbi5BcHBsaWNhdGlvbnMuV2lkZ2V0QXBwbGljYXRpb24ubWRcIj5UaXplbi5BcHBsaWNhdGlvbnMuV2lkZ2V0QXBwbGljYXRpb248XC9hPiBjbGFzczxcL2xpPlxuPGxpPjxhIGhyZWY9XCJcL2FwcGxpY2F0aW9uXC9kb3RuZXRcL2FwaVwvVGl6ZW5GWFwvbGF0ZXN0XC9hcGlcL1RpemVuLkFwcGxpY2F0aW9ucy5Db3JlQXBwbGljYXRpb24ubWRcIj5UaXplbi5BcHBsaWNhdGlvbnMuQ29yZUFwcGxpY2F0aW9uPFwvYT4gY2xhc3M8XC9saT5cbjxcL3VsPlxuPFwvbGk+XG48XC91bD5cbiZsdDtzY3JpcHQ+XG4gICAgZnVuY3Rpb24gb3BlblRhYlNlY3Rpb24oZXZ0LCBwcm9maWxlTmFtZSwgc2VjdGlvbklkKSB7XG4gICAgICAgIHZhciBpLCB0YWJjb250ZW50LCB0YWJsaW5rcywgc2VjdGlvbjtcbiAgICAgICAgbGV0IHNlbGVjdGVkID0gMDtcblxuICAgICAgICBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VjdGlvbklkKTtcbiAgICAgICAgdGFiY29udGVudCA9IHNlY3Rpb24uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhYmNvbnRlbnRcIik7XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYmNvbnRlbnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRhYmNvbnRlbnRbaV0uc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgaWYgKHRhYmNvbnRlbnRbaV0uaWQgPT0gcHJvZmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0YWJsaW5rcyA9IHNlY3Rpb24uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhYmxpbmtzXCIpO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsaW5rcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGFibGlua3NbaV0uY2xhc3NOYW1lID0gdGFibGlua3NbaV0uY2xhc3NOYW1lLnJlcGxhY2UoXCIgYWN0aXZlXCIsIFwiXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFiY29udGVudFtzZWxlY3RlZF0uc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcbiAgICAgICAgZXZ0LmN1cnJlbnRUYXJnZXQuY2xhc3NOYW1lICs9IFwiIGFjdGl2ZVwiO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibm90ZS1udWlcIikuY2xpY2soKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInZpZXdlci1udWlcIikuY2xpY2soKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNsYXNzLW51aVwiKS5jbGljaygpO1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY29kZS1udWlcIikuY2xpY2soKTtcbiZsdDtcL3NjcmlwdD5cbiIsInRhYmxlX29mX2NvbnRlbnQiOiI8dWwgY2xhc3M9XCJ0YWJsZS1vZi1jb250ZW50c1wiPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC13aWRnZXQtZmVhdHVyZXNcIj5XaWRnZXQgZmVhdHVyZXM8XC9hPjxcL2xpPlxuPGxpPjxhIGhyZWY9XCIjY29udGVudC13aWRnZXQtaW5zdGFuY2VzXCI+V2lkZ2V0IGluc3RhbmNlczxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXdpZGdldC1pbnN0YW5jZS1zdGF0ZXMtYW5kLWV2ZW50c1wiPldpZGdldCBpbnN0YW5jZSBzdGF0ZXMgYW5kIGV2ZW50czxcL2E+PFwvbGk+XG48bGk+PGEgaHJlZj1cIiNjb250ZW50LXByZXJlcXVpc2l0ZXNcIj5QcmVyZXF1aXNpdGVzPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtY3JlYXRlLWEtd2lkZ2V0LWFwcGxpY2F0aW9uXCI+Q3JlYXRlIGEgd2lkZ2V0IGFwcGxpY2F0aW9uPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtZGF0YS1zaGFyaW5nLWJldHdlZW4tdGhlLXdpZGdldC1hcHBsaWNhdGlvbi1hbmQtb3RoZXItYXBwbGljYXRpb25zXCI+RGF0YSBzaGFyaW5nIGJldHdlZW4gdGhlIHdpZGdldCBhcHBsaWNhdGlvbiBhbmQgb3RoZXIgYXBwbGljYXRpb25zPFwvYT48XC9saT5cbjxsaT48YSBocmVmPVwiI2NvbnRlbnQtcmVsYXRlZC1pbmZvcm1hdGlvblwiPlJlbGF0ZWQgaW5mb3JtYXRpb248XC9hPjxcL2xpPlxuPFwvdWw+XG4iLCJ0aXRsZSI6IldpZGdldCBBcHBsaWNhdGlvbiIsInJhdyI6bnVsbH0seyJjbGFzcyI6IkFwcFxcU2VydmljZXNcXERvY3VtZW50YXRpb25cXERhdGFcXFJlbmRlcmVkTWFya2Rvd24iLCJzIjoid3JibCJ9XX0seyJzIjoiYXJyIn1dfSwibWVtbyI6eyJpZCI6IlZvM2w1bnpQZkVvMW5yeGRWTXVFIiwibmFtZSI6Il9fbW91bnRQYXJhbXNDb250YWluZXIiLCJwYXRoIjoiZG9jc1wvYXBwbGljYXRpb25cL2RvdG5ldFwvZ3VpZGVzXC9hcHBsaWNhdGlvbnNcL3VpYXBwbGljYXRpb25cL3dpZGdldC1hcHAiLCJtZXRob2QiOiJHRVQiLCJyZWxlYXNlIjoiYS1hLWEifSwiY2hlY2tzdW0iOiJjYmIxYTI2M2I0YzEwNjljM2E2NjBiYWFiYTdkNDM5ZTZlMWQwYTQ4NmYyOWZkODk1YTIxOTUwMWM2MGZlYzBlIn0=')" >